你能承擔我的最佳以上ellegant方式, List<Product>
allProducts轉換爲Map<Integer, List<Product>>
產品由ProductNumber分組。轉換列表<Product>地圖<整數,列表<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