2011-10-17 22 views
7

संभव डुप्लिकेट HashMap के लिए:
Java: How to convert List to Mapपरिवर्तित ArrayList

मैं ArrayList

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

मैं इस

HashMap<String, Product> s= new HashMap<String,Product>(); 
0 की तरह HashMap को ArrayList को परिवर्तित करना चाहते हैं

कृपया मुझे मदद करें कि हैश मैप में कैसे परिवर्तित करें।

+0

करता है 'Product' है: एक उदाहरण इस प्रकार है एक अद्वितीय संपत्ति (ies)? – SimonC

+0

हां। प्रोडक्टकोड अद्वितीय है – Piraba

+0

मान लें कि ** फ़ील्ड 1 ** _ ** उत्पाद ** _ कक्षा के भीतर एक फ़ील्ड है, इसलिए आप यह 'मानचित्र <स्ट्रिंग, उत्पाद> urMap = yourList.stream() संग्रह कर सकते हैं। .toMap (उत्पाद :: getField1, Function.identity())); –

उत्तर

16

सामान्य कार्यप्रणाली ArrayList के माध्यम से पुनरावृति, और HashMap में मूल्यों को सम्मिलित करने के लिए होगा।

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

इटरेटिंग थोड़ी धीमी है। एक तेज़ तरीका होना चाहिए। –

+1

आप जावा 8 के स्ट्रीम एपीआई का उपयोग कर सकते हैं। Http://codecramp.com/java-8-streams-api-convert-list-map/ देखें – EMM

1

मानचित्र कुंजी के रूप में एक माना जाता नाम संपत्ति का उपयोग करना:

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

[संपादित]

ProductCode के बारे में अपनी टिप्पणी का उपयोग कर (और उत्पाद कोड एक स्ट्रिंग संभालने जाता है) संदर्भ के रूप में ...

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