我正在使用每个键有两个值的Multimap。下面是我用来分别获取每个值的代码:
第一位代码获取第一个对象值:
for(Object object : map.get(object))
{
return object
}
然后,我正在使用另一种方法来检索另一个值。此方法将第一个对象作为参数:
for(Object object : team.get(object))
{
if(object != initialObject)
{
return object;
}
}
这似乎是一种“hackish”的做事方式,所以有什么方法可以让我更轻松地获得价值?
答案 0 :(得分:7)
如果您正在使用Guava,Iterables#get
可能就是您想要的 - 它会从任何可迭代中返回第N个项目,例如:
Multimap<String, String> myMultimap = ArrayListMultimap.create();
// and to return value from position:
return Iterables.get(myMultimap.get(key), position);
如果您使用的是ListMultimap
,那么它的行为与列表的地图非常相似,因此您可以直接拨打get(n)
。
答案 1 :(得分:2)
Collection<Object> values = map.get(key);
checkState(values.size() == 2, String.format("Found %d values for key %s", values.size(), key));
return values.iterator().next(); // to get the first
Iterator<Object> it = values.iterator();
it.next(); // move the pointer to the second object
return it.next(); // get the second object