मुझे तुम मेरे कोड दिखाने दें: getFooMultiMapCode()
परसूची <Foo> से नक्शा करने के लिए <स्ट्रिंग, सूची <Foo>>: बेहतर कार्यान्वयन के लिए देख
कक्षा फू
public class Foo {
String code;
String value;
public Foo(String code, String value) {
super();
this.code = code;
this.value = value;
}
// getters/setters
}
मुख्य विधि (फोकस विधि):
public class FooMain {
public static void main(String[] args) {
Foo foo1 = new Foo("100","foo1");
Foo foo2 = new Foo("200","foo2");
Foo foo3 = new Foo("300","foo3");
Foo foo4 = new Foo("100","foo4");
Foo foo5 = new Foo("100","foo5");
Foo foo6 = new Foo("200","foo6");
List<Foo> foos = Arrays.asList(foo1,foo2,foo3,foo4,foo5,foo6);
Map<String,List<Foo>> fooCodeMap = getFooMultiMapCode(foos);
System.out.println(fooCodeMap);
}
private static Map<String, List<Foo>> getFooMultiMapCode(List<Foo> foos) {
Map<String, List<Foo>> fooMultiMapCode = new HashMap<String, List<Foo>>();
for(Foo foo:foos){
List<Foo> list = fooMultiMapCode.get(foo.getCode());
if(list==null){
list = new ArrayList<Foo>();
list.add(foo);
fooMultiMapCode.put(foo.getCode(), list);
}
else {
list.add(foo);
}
}
return fooMultiMapCode;
}
}
मुख्य प्रिंट सही ढंग से थाई रों स्ट्रिंग:
{100=[foo1, foo4, foo5], 200=[foo2, foo6], 300=[foo3]}
मैं उदाहरण java8 के लिए उपयोग कर एक और अधिक लधु तरह से getFooMultiMapCode
विधि के पुनर्लेखन के लिए चाहते हैं या भी इस तरह के lambdaj, अमरूद, आदि पुस्तकालयों लेकिन मैं विधि हस्ताक्षर बदलने के लिए नहीं करना चाहती ।
गैर धारा संस्करण: '(फू फू: कम महत्वपूर्ण चीज़ें) के लिए। FooMultiMapCode.computeIfAbsent (foo.getCode(), एक्स -> नई ArrayList <>()) जोड़ने (foo);' – Holger