2012-02-17 22 views
12

İki haritayı Java'da tek bir Guava MultiMap ile birleştirmenin en iyi yolu nedir? Örneğinİki haritayı bir MultiMap ile birleştirin

:

  • MAP1, (1 a) ve (2, b)
  • MAP2 sonra, (2, c) ve (3, d)

içerir

  • (1, {a}) ihtiva edecektir elde edilen birleşik Multimap (2, {b, c}), ve (3, {D})

Bu benim şimdiki çözüm:

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

Eh, genellikle _best_ yolu yoktur ve yol bana göre mantıklı geliyor. Bununla ilgili herhangi bir problemin var mı? Değilse, ben sadece onunla devam ediyorum (jenerikleri yeni MultiMap() 'e de eklemek istiyorum). – Thomas

cevap

21

... bu multimaps ne tür nelerdir? Guava'dan mı yoksa başka kütüphanelerden mi?

Guava olarak,

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

Onlar gerçekten Guava ve aradığım şey buydu. Benim google becerilerim bu sefer başarısız oldu. Teşekkürler –

1

Çözümünüz iyi görünüyor yapabilirdi. Ancak karmaşıklık/hız aynıdır,

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

ve sonra sadece ikinci harita üzerinden yineleme: Böyle ilklendireceğiniz.

İlgili konular