我有以下类似的东西:
final SortedMap<Integer,List<Integer>> m = new TreeMap<Integer,List<Integer>>();
我想使用google-guava来创建一个Multimap。然而,我没有找到任何提供持有ArrayList的SortedMap实现。我只看到了HashMap+ArrayList实现(ArrayListMultimap)。是否存在我想要的实现?
Guava有一个TreeMultimap,可以按排序顺序存储键和值。然而,它使用TreeSet
来存储值,而不是List
,因此可能并不完全符合你的要求。在这种情况下,Guava允许你创建一个Multimap
,以任何想要的方式工作,只需使用其中一个Multimaps.new*Multimap
方法,例如Multimaps.newListMultimap。要创建与你描述的相同的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
}
});
Multimap<Integer,Integer> multimap = Multimaps.newListMultimap(
Maps.<Integer, Collection<Integer>>newTreeMap(),
new Supplier<List<Integer>>() {
public List<Integer> get() {
return Lists.newArrayList();
}
});