java - 使用 TreeMap 而不是 HashMap 的 guava multimap?

标签 java guava

我有如下内容:

final SortedMap<Integer,List<Integer>> m = new TreeMap<Integer,List<Integer>>();

我想使用 google-guava 将其制作成多重 map 。但是,我没有看到任何提供包含 ArrayList 的 SortedMap 的实现。我只看到了HashMap+ArrayList的实现(ArrayListMultimap)。我想要的实现是否存在?

最佳答案

Guava 有一个 TreeMultimap按排序顺序存储键和值。但是,这使用 TreeSet 而不是 List 作为值,因此它可能不是您想要的。在这种情况下,Guava 允许您使用 Multimaps.new*Multimap 方法之一创建一个以您想要的方式工作的 Multimap,例如 Multimaps.newListMultimap .要使一个像您描述的那样工作,您只需编写以下内容:

Map<Integer, Collection<Integer>> map = Maps.newTreeMap();
ListMultimap<Integer, Integer> m = Multimaps.newListMultimap(map,
    new Supplier<List<Integer>>() {
      public List<Integer> get() {
        return Lists.newArrayList(); // assuming you want to use ArrayList
      }
    });

关于java - 使用 TreeMap 而不是 HashMap 的 guava multimap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6470054/

相关文章:

java - java中是否有并发&自过期&有序 HashMap

java - graphql-java - 如何在 spring boot 中使用订阅?

java - 使用 SimpleDateFormat 格式化日期

java - 为什么 ImageIO 在将 BMP 文件重新保存到 MS Paint 中之前不读取它?

java - 按降序(逆序)对 TreeMultimap 进行排序

java.lang.NoClassDefFoundError : com/google/common/base/internal/Finalizer$ShutDown (wrong name: com/google/common/base/internal/Finalizer)

Java 根据值顺序对对象列表进行排序(例如 d、s、a、q、c)

java - 使用 Java 正则表达式提取键值对

java - 如何让丢失的条目在 Guava 中更快地过期

java - 推断aspectj方法中参数的类型