2012-02-17 34 views
12

Cách tốt nhất để kết hợp hai Bản đồ thành một Bản đồ Đa hướng trong Java là gì?Kết hợp hai Bản đồ vào một MultiMap

Ví dụ:

  • Map1 chứa (1, a) và (2, b)
  • Map2 chứa (2, c) và (3, d)

Sau đó, kết quả kết hợp Multimap sẽ chứa

  • (1, {a}), (2, {b, c}), và (3, {d})

Đây là giải pháp hiện tại của tôi:

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

Vâng, thường không có cách nào _best_ và cách của bạn có vẻ hợp lý với tôi. Bạn có bất kỳ vấn đề với điều này? Nếu không, tôi chỉ cần gắn bó với nó (ngoại trừ việc tôi sẽ thêm generics vào 'MultiMap mới()' quá :)). – Thomas

Trả lời

21

... Những loại multimaps đây là? Họ đến từ ổi, hay một số thư viện khác?

Trong ổi, bạn có thể làm

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

Họ thực sự là ổi và đây là những gì tôi đang tìm kiếm. Kỹ năng google của tôi dường như đã thất bại trong lần này. Cảm ơn –

1

giải pháp của bạn có vẻ tốt đẹp. Bạn có thể khởi tạo như sau:

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

và sau đó chỉ lặp qua bản đồ thứ hai, tuy nhiên độ phức tạp/tốc độ là như nhau.

Các vấn đề liên quan