繁体   English   中英

使用TreeMap而不是HashMap的番石榴多图?

[英]guava multimap that uses TreeMap not HashMap?

我有类似以下内容:

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

而且我想使用google-guava将其制成多图。 但是,我看不到任何提供包含ArrayList的SortedMap的实现。 我只看到HashMap + ArrayList实现(ArrayListMultimap)。 我想要的实现存在吗?

Guava有一个TreeMultimap ,它按排序顺序存储键和值。 但是,这使用TreeSet来提供值,而不是使用List因此在这里可能并不是您想要的。 在这种情况下,番石榴允许您创建一个Multimap的作品,你想用的任何一个方式Multimaps.new*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
      }
    });

这是创建野兽的方法:

Multimap<Integer,Integer> multimap = Multimaps.newListMultimap(
    Maps.<Integer, Collection<Integer>>newTreeMap(),
    new Supplier<List<Integer>>() {
        public List<Integer> get() {
            return Lists.newArrayList();
        }
    });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM