Ser*_*hyi 1 java collections list map
您可以向我假设最好或更优雅的方式,将List<Product>所有Map<Integer, List<Product>>产品转换
为按ProductNumber分组的产品.
例如我的产品POJO.
public class Product{
..
private Integer productCode;
private String productName;
...
//getters, setters
}
Run Code Online (Sandbox Code Playgroud)
这是我的尝试,但我认为它不那么优雅:
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;
}
Run Code Online (Sandbox Code Playgroud)
Java 8解决方案:
Map<Integer, List<Product>> productsByCode = products.stream()
.collect(Collectors.groupingBy(Product::getProductCode));
Run Code Online (Sandbox Code Playgroud)