簡體   English   中英

保留番石榴SetMultimap中的插入順序

[英]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.

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