我有以下内容:
final SortedMap<Integer,List<Integer>> m = new TreeMap<Integer,List<Integer>>();
我想使用google-guava将其设为多图。但是,我没有看到任何提供包含ArrayList的SortedMap的实现。我只看到HashMap + ArrayList实现(ArrayListMultimap)。我想要的实现是否存在?
答案 0 :(得分:13)
Guava有一个TreeMultimap,它按排序顺序存储键和值。但是,这会使用TreeSet
作为值,而不是List
,所以它可能不是您想要的。在这种情况下,Guava允许您使用Multimap
方法之一(例如Multimaps.newListMultimap)以任意方式创建Multimaps.new*Multimap
。为了制作一个像你描述的那样,你只需写下:
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
}
});
答案 1 :(得分:7)
以下是如何制作野兽:
Multimap<Integer,Integer> multimap = Multimaps.newListMultimap(
Maps.<Integer, Collection<Integer>>newTreeMap(),
new Supplier<List<Integer>>() {
public List<Integer> get() {
return Lists.newArrayList();
}
});