Не могли бы вы предположить, мне лучше или более ellegant способ, чтобы преобразовать List<Product>
allProducts в Map<Integer, List<Product>>
продуктов, сгруппированных по ProductNumber.Список Преобразовать <Product> к карте <Integer, Список <Product>>
Например, мой продукт POJO.
public class Product{
..
private Integer productCode;
private String productName;
...
//getters, setters
}
Это моя попытка, но я думаю, что это не так ellegant:
public Map<Integer, List<Product>> getProductsByIndex (List<Product> products){
Map<Integer, List<Product>> resultMap = new HashMap<>();
Set<Integer> productCodes = getProductCodes(products);
for(Integer productCode: productCodes){
List<Product> productsByCode = new ArrayList<>();
for(Product product : products){
if(productCode == product.getCode()){
productsByCode.add(product);
}
}
resultMap.put(productCode, productsByCode);
}
return resultMap;
}
public Set<Integer> getProductCodes (List<Product> products){
Set<Integer> productCodes = new HashSet<>();
for(Product product: products){
productCodes.add(product.getCode());
}
return productCodes;
}
Правильный ответ, но вы должны, вероятно, отметить, что 'productsByCode' - это ваш результат, а не' resultMap' в исходном коде. – jwueller
+1, может быть, не так * элегантно * как решение для Java 8 ниже, но легко понять на первый взгляд – user1781290
@ user1781290: Он также работает практически во всех версиях Java, которые в настоящее время используются, что значительно улучшает полезность этого фрагмента/ответа , – jwueller