Gar*_*son 4 java immutability multimap sortedset guava
谷歌番石榴有一个SortedSetMultimap.精彩.现在哪里是不可变版本?有一个ImmutableSetMultimap.但那怎么样ImmutableSortedSetMultimap?(请不要回答"你为什么想要一个?")
它实际上不会实现SortedSetMultimap,但ImmutableSetMultimap.Builder有一个orderValuesBy(Comparator)你可以使用的方法,它具有值集合的效果ImmutableSortedSet.
如果你不需要 的补充意义Multimap,你有间接的方法(我用SO编写了代码,所以它可能不起作用,但想法是存在的):
SortedSetMultimap<K,V> set = ...;
ImmutableMap<K, ImmutableSortedSet<V>> result = ImmutableMap.copyOf(Maps.transform(set.asMap(), new Function<SortedSet<V>, ImmutableSortedSet<V>>() {
public ImmutableSortedSet<V> apply(SortedSet<V> s) {
return ImmutableSortedSet.copyOf(s);
}
});
Run Code Online (Sandbox Code Playgroud)
那就是:把你SortedSetMultimap变成a Map<K,SortedSet<V>>,然后a Map<K,ImmutableSortedSet<V>>,然后an ImmutableMap。
我对 Guava 的了解还不够,但由于 是ImmutableSetMultimap不可变的,复制集的顺序可能会保留:这意味着绝对不需要ImmutableSortedSetMultimap导航/迭代(除非您需要特定的方法SortedSet)。