gpt4 book ai didi

java - 保留 Guava SetMultimap 中的插入顺序

转载 作者:行者123 更新时间:2023-12-01 09:14:33 25 4
gpt4 key购买 nike

我有一个要求,我需要有 MultiMap,其中不应有重复值。为此,我使用了 Guava SetMultimap。但现在我想保留插入顺序。如何使用 SetMultiMap 实现它?非常感谢任何帮助。

谢谢,图沙尔

最佳答案

对于稍后出现的人,这里有一些测试代码来显示 LinkedHashMultimap 的行为:

  private static void assertTrue(boolean x)
{
if (!x)
{
throw new AssertionError();
}
}

public static void main(String[] args)
{
SetMultimap<String, String> sm = LinkedHashMultimap.create();

List<Map.Entry<String, String>> entries = Arrays.asList(
new AbstractMap.SimpleEntry<>("z", "z"),
new AbstractMap.SimpleEntry<>("a", "a"),
new AbstractMap.SimpleEntry<>("x", "x"),
new AbstractMap.SimpleEntry<>("z", "x") // Multiple values per key OK
);

for (Map.Entry<String, String> entry : entries)
{
assertTrue(sm.put(entry.getKey(), entry.getValue()));
}

assertTrue(!sm.put("z", "z")); // Duplicate not added

// Check iterator ordering is same as insertion order
Iterator<Map.Entry<String, String>> i1 = sm.entries().iterator();
Iterator<Map.Entry<String, String>> i2 = entries.iterator();
while (i1.hasNext() && i2.hasNext())
{
assertTrue(i1.next().equals(i2.next()));
}
// Check same number of elements in both collections
assertTrue(!i1.hasNext() && !i2.hasNext());
}

关于java - 保留 Guava SetMultimap 中的插入顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40667207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com