2012-02-17 12 views
12

में दो मैप्स को जावा में एक एकल गुवा मल्टीमैप में जोड़ने का सबसे अच्छा तरीका क्या है?दो मैप्स को मल्टीमैप

उदाहरण के लिए:

  • Map1 शामिल (1, एक) और (2, ख)
  • MAP2 (2, सी) और (3, घ)

तब होता है जिसके परिणामस्वरूप संयुक्त मल्टीमैप होते हैं

  • (1, {a}), (2, {ख, ग}), और (3, {घ})

यह मेरे वर्तमान समाधान है:

Multimap<T, K> combineMaps(Map<T, K> map1, Map<T, K> map2) { 
    Multimap<T, K> multimap = new MultiMap(); 
    for (final Map.Entry<T, K> entry : map1.entrySet()) { 
     multimap.put(entry.getKey(), entry.getValue()); 
    } 
    for (final Map.Entry<T, K> entry : map2.entrySet()) { 
     multimap.put(entry.getKey(), entry.getValue()); 
    } 
    return multimap; 
} 
+0

ठीक है, अक्सर कोई _best_ रास्ता नहीं है और आपका तरीका मेरे लिए समझदार लगता है। क्या आपको इसके साथ कोई समस्या है? यदि नहीं, तो मैं बस इसके साथ रहूंगा (सिवाय इसके कि मैं जेनरिक को 'नया मल्टीमैप()' भी जोड़ दूंगा :))। – Thomas

उत्तर

21

... इन multimaps किस तरह कर रहे हैं? क्या वे अमरूद, या कुछ अन्य पुस्तकालय से हैं?

अमरूद में, आप

multimap.putAll(Multimaps.forMap(map1)); 
multimap.putAll(Multimaps.forMap(map2)); 
+0

वे वास्तव में अमरूद हैं और यही वह है जिसे मैं ढूंढ रहा था। ऐसा लगता है कि मेरे Google कौशल ने मुझे इस समय विफल कर दिया है। धन्यवाद –

1

आपका समाधान ठीक लग रहा है कर सकता है। आप इस तरह से प्रारंभ कर सकते हैं:

Multimap<T, K> multimap = new MultiMap(map1); 

और उसके बाद ही दूसरा मानचित्र के माध्यम से पुनरावृति, तथापि जटिलता/गति एक ही है।

संबंधित मुद्दे