[英]Preserve order of Insertion in guava SetMultimap
我有一個要求,我需要在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());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.