番石榴ImmutableSortedSetMultimap?

Gar*_*son 4 java immutability multimap sortedset guava

谷歌番石榴有一个SortedSetMultimap.精彩.现在哪里是不可变版本?有一个ImmutableSetMultimap.但那怎么样ImmutableSortedSetMultimap?(请不要回答"你为什么想要一个?")

Lou*_*man 8

它实际上不会实现SortedSetMultimap,但ImmutableSetMultimap.Builder有一个orderValuesBy(Comparator)你可以使用的方法,它具有值集合的效果ImmutableSortedSet.


NoD*_*und 0

如果你不需要 的补充意义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)。