簡體   English   中英

通過值索引獲取Guava Multimap的鍵

[英]Get key of Guava Multimap by index of value

假設這是我在Multimap集合中的示例數據:

x -> [1,2]
y -> [1,3]
z -> [4]

然后我列出了一個可能像這樣的值列表:(第一列是值的索引,第二列是值)

0 -> 1
1 -> 2
2 -> 1
3 -> 3
4 -> 4

我的問題是如何通過知道該值的索引來獲取該值的配對鍵。 例如,索引“ 2”的鍵,鍵“ y”必須返回。

如果您想一次執行此操作,則可以對Multimap#entries()進行簡單循環並自己維護計數器,但是:

  1. 各種Mutlimap實現的迭代順序可能不同
  2. 如果主要用例是按索引訪問鍵/值,那么您根本不應該在這里使用Multimap ,而應該維護一個列表(可能是List<Entry<String, Integer>> )。

如果確實需要.entries().asList()並且它是不可變的,則可以使用.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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM