私は Java 8 ラムダを使用Collectors
toMap
しており、 を返すために使用したいと考えていますSortedMap
。私が思いつく最善の方法は、次のCollectors
toMap
メソッドをダミーmergeFunction
とmapSupplier
等号で呼び出すことTreeMap::new
です。
public static <T, K, U, M extends Map<K, U>>
Collector<T, ?, M> toMap(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper,
BinaryOperator<U> mergeFunction,
Supplier<M> mapSupplier) {
BiConsumer<M, T> accumulator = (map, element) -> map.merge(keyMapper.apply(element),
valueMapper.apply(element), mergeFunction);
return new CollectorImpl<>(mapSupplier, accumulator, mapMerger(mergeFunction), CH_ID);
}
ただし、次throwingMerger()
の基本的な実装と同じように、マージ関数を渡したくありません。toMap
public static <T, K, U>
Collector<T, ?, Map<K, U>> toMap(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends U> valueMapper) {
return toMap(keyMapper, valueMapper, throwingMerger(), HashMap::new);
}
Collectors
を返すために使用するベストプラクティスの方法は何SortedMap
ですか?