2012-03-06 28 views
1

我有番石榴HashMultimap这样番石榴不同的多重映射值

Multimap<String, String> multiMap = HashMultimap.create(); 
multiMap.put("a", "x"); 
multiMap.put("a", "y"); 
multiMap.put("b", "y"); 
multiMap.put("b", "z"); 
multiMap.put("d", "x"); 
multiMap.put("c", "h"); 

,我想创建一个表与不同键和值。调用

multiMap.values(); // returns x,y,y,z,x,h 

但我想要一组不同的值?

我知道Iterator.filter()可用,但我不确定它应该如何实现。预期的结果应该是

// x,y,z,h 

回答

8

我只是用

Sets.newHashSet(multiMap.values()); 

或者,如果你想要一个不可改变的版本:

ImmutableSet.copyOf(multiMap.values()); 

注意,在这两种情况下,你不再有实时查看价值观而不是副本。

+0

所有正确,但设计为获得multimap值的方法称为'values()',而不是'getValues()'。 – Xaerxess 2012-03-07 15:16:14

+0

更新,谢谢。 – 2012-03-08 03:13:47