I have a list of product exampe
List<Product> productList = [product1, product2,product2, product3, product3, product5];
My product class is
public class Product {
private long productId;
private String productName;
private double productPrice;
... getters and setters
}
I want to have two list : the first returns only product which occur more than once and the second returns product which occur only once
I am using Streams with java 8
List<Product> productMoreThanOnce = new ArrayList<>();
List<Product> productOnlyOnce = new ArrayList<>();
productMoreThanOnce = productList.stream().filter(e-> Collections.frequency(productList, e) > 1).distinct().collect(Collectors.toList());
productOnlyOnce = productList.stream().filter(e-> Collections.frequency(productList, e) == 1).distinct().collect(Collectors.toList());
but productMoreThanOnce doesn't returns duplicated product => [product2,product3]
what is the best way to do this ?
equalsmethod to facilitate comparison.