gpt4 book ai didi

java - 将 List 转换为 Map>

转载 作者:行者123 更新时间:2023-11-29 09:43:54 26 4
gpt4 key购买 nike

你能为我假设最好或更优雅的方式来转换 List<Product>所有产品到Map<Integer, List<Product>>按产品编号分组的产品。

例如我的产品 POJO。

public class Product{
..
private Integer productCode;
private String productName;
...
//getters, setters
}

这是我的尝试,但我认为它不是那么优雅:

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;
}

最佳答案

Java 8 解决方案:

Map<Integer, List<Product>> productsByCode  = products.stream()
.collect(Collectors.groupingBy(Product::getProductCode));

关于java - 将 List<Product> 转换为 Map<Integer, List<Product>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20682979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com