2011-10-17 53 views
7

thể trùng lặp:
Java: How to convert List to MapChuyển đổi ArrayList để HashMap

Tôi có ArrayList

ArrayList<Product> productList = new ArrayList<Product>(); 
productList = getProducts(); //Fetch the result from db 

Tôi muốn chuyển đổi để ArrayList để HashMap Như thế này

HashMap<String, Product> s= new HashMap<String,Product>(); 

Vui lòng giúp tôi cách chuyển đổi sang HashMap.

+0

Liệu 'Product' có một thuộc tính duy nhất? – SimonC

+0

Yes.ProductCode là duy nhất – Piraba

+0

Giả sử rằng ** field1 ** là một trường trong _ ** Product ** _ class, do đó bạn có thể thực hiện việc thu thập 'Map urMap = yourList.stream(). .toMap (Sản phẩm :: getField1, Function.identity())); ' –

Trả lời

16

Phương pháp chung sẽ được lặp qua ArrayList, và chèn các giá trị vào các HashMap. Một ví dụ là như sau:

HashMap<String, Product> productMap = new HashMap<String, Product>(); 
for (Product product : productList) { 
    productMap.put(product.getProductCode(), product); 
} 
+0

Lặp lại là chậm. Phải có một cách nhanh hơn. –

+1

Bạn có thể sử dụng API luồng của Java 8. Xem http://codecramp.com/java-8-streams-api-convert-list-map/ – EMM

1

Sử dụng một tài sản tên giả là chìa khóa bản đồ:

for (Product p: productList) { s.put(p.getName(), p); } 
1

[sửa]

sử dụng nhận xét của bạn về productCode (và giả mã sản phẩm là một String) như tài liệu tham khảo ...

for(Product p : productList){ 
     s.put(p.getProductCode() , p); 
    } 
Các vấn đề liên quan