【问题标题】:LinkedHashMap or MultimapLinkedHashMap 或 Multimap
【发布时间】:2018-05-08 00:36:37
【问题描述】:
LinkedHashMap<String, List<Object>>  = ???

linkedHashMap.put("a", list1);
linkedHashMap.put("e, list2);
linkedHashMap.put("i", list3);
linkedHashMap.put("o", list4);
linkedHashMap.put("u", list5);
linkedHashMap.put("g", list6);
linkedHashMap.put("a", list7);

我希望以完全相同的顺序接收,并且我可以有重复的密钥。

【问题讨论】:

  • 地图不能有重复的键
  • MultiMap 支持重用。 baeldung.com/guava-multimap
  • 经典多映射是一个映射,其中值是值的集合,在您的情况下,您可能会寻找 LinkedHashMap>>
  • 这里的实际问题是什么?使用哪个类?如果您想要重复键,则不能使用LinkedHashMap,除非您将其设为列表映射。

标签: java multimap linkedhashmap


【解决方案1】:

在您的情况下,如果您要为条目保留完全相同的顺序,则可以使用 LinkedListMultimap entries() 方法:,另请参阅它与 get 方法的不同之处。

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.Multimap;;

public class Main {

  public static void main(String[] args) {

    List<Object> list1 = Arrays.asList(1);
    List<Object> list2 = Arrays.asList(2);
    List<Object> list3 = Arrays.asList(3);
    List<Object> list4 = Arrays.asList(4);
    List<Object> list5 = Arrays.asList(5);
    List<Object> list6 = Arrays.asList(6);
    List<Object> list7 = Arrays.asList(7);

    Multimap<String, List<Object>> mmap = LinkedListMultimap.create();
    mmap.put("a", list1);
    mmap.put("e", list2);
    mmap.put("i", list3);
    mmap.put("o", list4);
    mmap.put("u", list5);
    mmap.put("g", list6);
    mmap.put("a", list7);


    for (Map.Entry<String, List<Object>> entry : mmap.entries()) {
      System.out.println(entry.getKey() + " " + entry.getValue());
    }

    System.out.println("Multimap key grouped  values");

    for (String key : mmap.keys()) {
      System.out.println(key+ " " + mmap.get(key));
    }

   }
}

【讨论】:

  • 我需要GUAVA库来实现LinkedListMultimap吗?
  • 您需要 GUAVA 库才能使用 com.google.common.collect.LinkedListMultimap 和 com.google.common.collect.Multimap,为提供的解决方案更新导入
  • 谢谢@Witas,但我不想使用 GUAVA 库。我们可以不使用 GUAVA 库吗?
  • 在这种情况下,您将编写简单的多图实现,techiedelight.com/implement-multimap-java
猜你喜欢
  • 1970-01-01
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-20
  • 2020-11-26
  • 2013-07-28
  • 2015-03-01
相关资源
最近更新 更多