假设这是我在Multimap集合中的示例数据:
x -> [1,2]
y -> [1,3]
z -> [4]
然后我创建了一个值列表,可能是这样的:(第一列是值的索引,第二列是值)
0 -> 1
1 -> 2
2 -> 1
3 -> 3
4 -> 4
我的问题是如何通过了解该值的索引来获取值的配对键。例如索引的关键" 2" ,关键" y"必须回来。
答案 0 :(得分:1)
如果您想这样做一次,您可以对Multimap#entries()
进行简单循环并自行维护,但是:
Mutlimap
实现的迭代顺序可能不同Multimap
,而是维护一个列表(可能是List<Entry<String, Integer>>
)。 如果你真的必须拥有多图并且它是不可变的,你可以使用.entries().asList()
视图来实现我上面描述的内容:
//given
ImmutableListMultimap<String, Integer> multimap =
ImmutableListMultimap.<String, Integer>builder()
.putAll("x", 1, 2)
.putAll("y", 1, 3)
.putAll("z", 4)
.build();
ImmutableList<Map.Entry<String, Integer>> entriesWithPosition =
multimap.entries().asList();
//when
Map.Entry<String, Integer> foundEntry = entriesWithPosition.get(2);
//then
assertThat(foundEntry.getKey()).isEqualTo("y");