2014-09-10 6 views
3

Google Guava имеет SortedSetMultimap. Замечательно. Теперь, где неизменная версия? Существует ImmutableSetMultimap. Но как насчет ImmutableSortedSetMultimap? (Пожалуйста, не отвечайте «Почему вы хотите?»)Guava ImmutableSortedSetMultimap?

+0

Сэр, уточните еще несколько тем. Если я правильно помню, характер набора несколько противоречит порядку? – Coffee

+1

Вы имеете в виду, 'TreeSet' не существует? – biziclop

+3

Чтобы ответить на вопрос, действительно, похоже, не один, хотя это вполне разумная вещь. Возможно, вам следует отправить запрос на функцию. – biziclop

ответ

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); 
    } 
}); 

То есть: превратить ваш SortedSetMultimap в Map<K,SortedSet<V>>, то Map<K,ImmutableSortedSet<V>>, а затем ImmutableMap.

И я не знаю достаточно Гуавы, но так как ImmutableSetMultimap неизменен, порядок копируемого набора может остаться: это означает, что нет никакой необходимости в ImmutableSortedSetMultimap для навигации/итерации (если вам нужен конкретный метод от SortedSet).

7

Это не будет фактически осуществлять SortedSetMultimap, но ImmutableSetMultimap.Builder имеет orderValuesBy(Comparator) метод, который вы можете использовать, который имеет эффект, что наборы значений являются ImmutableSortedSet s.

 Смежные вопросы

  • Нет связанных вопросов^_^