2010-01-22 35 views
9

Tôi đang cố gắng có một Multimap (dựa trên băm) với nhiều (giá trị băm) Đa giá trị cho mỗi khóa. Xem ví dụ:Multimap với HashMultiset cho các giá trị

Multimap<Object, Object> mmap = Multimaps.newMultimap(
    Maps.<Object, Collection<Object>>newHashMap(), 
    new Supplier<Collection<Object>>() { 
    public Collection<Object> get() { 
    return HashMultiset.create(); 
    } 
}); 
mmap.put("1", "2"); 

Nhưng sau đó,

System.out.println(mmap.get("1") instanceof Multiset<?>); 
//false, the returned collection is not a HashMultiset, 
//but a (private) WrappedCollection 

Vì vậy, có vẻ như tôi không thể truy cập MultiSet mình đã tạo? Tôi muốn có thể trả lại điều đó, như một Multiset (được bao bọc trong Multisets.unmodifiableMultiset()). Tôi không muốn sao chép nó vào một Multiset mới mỗi lần. Tôi có tùy chọn nào khác ngoài việc chuyển về Map<K, Multiset<V>> và thêm mã của tôi vào độ phức tạp mà Multimap có nghĩa là để loại bỏ?

Trả lời

6

Tôi e rằng điều này dường như không thể thực hiện được. Bạn nên gửi yêu cầu tính năng. Tôi có một sự nghi ngờ lén lút những người Google xảo quyệt có một loại Multimap tiện lợi mà họ có khả năng có thể phát hành có khả năng có thể giúp bạn.

+0

Ồ, đó là những gì tôi nghi ngờ, cảm ơn anyway. Tôi không chắc chắn về tính năng yêu cầu (vì luôn có nguy cơ nhận được nó :)). PS: bạn rất bí mật ở lần! –

+2

Tôi cũng muốn điều này. Không có cơ hội nó xảy ra trong ≳4 năm qua? –

+1

Than ôi, không, chúng tôi đã mất niềm tin vào giải pháp cụ thể mà trước đây chúng tôi nghĩ rằng chúng tôi có thể phát hành. –

0

Multimap interface chỉ chỉ định rằng get(K) trả lại Collection<V>. Tôi nghĩ rằng nó sẽ là thiết kế nghèo cho mã của bạn để phụ thuộc hoặc giả định bất cứ điều gì khác.

Bạn có thể mở rộng thêm một chút về những gì bạn đang cố gắng làm ở đây không? Có vẻ như có một cách dễ dàng hơn để hoàn thành nó.

+4

Phiên bản ngắn của câu hỏi là: "Tôi chỉ muốn một multimap nơi tôi có thể xem các giá trị thông qua API đa truy vấn, không phải API thu thập". –

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