Ich verwende Java 8 lambdas und möchte Collectors
toMap
verwenden, um eine SortedMap
zurückzugeben. Das Beste, was ich mir vorstellen kann, ist das folgende Collectors
toMap
Verfahren mit einem Dummy mergeFunction
und mapSupplier
gleich TreeMap::new
.Java 8 Collectors.toMap SortedMap
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);
}
Ich will nicht, obwohl in einem Merge-Funktion übergeben, wie ich in der gleichen Art und Weise wie die Grund toMap
Implementierung nur throwingMerger()
wollen, wie folgt:
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);
}
Was das Beste wäre, Übung Methode der Verwendung Collectors
, um eine SortedMap
zurückgeben?
Ich habe * genau * das. –
Ich gehe auf die Custom Collectors Route, da ich ähnliche Dinge in Zukunft sehen kann. –
Der von Ihnen angegebene Parameter 'k' ist nicht der * Schlüssel *, wie der Buchstabe implizieren würde, sondern der erste Wert der binären Operation zum Zusammenführen. – antak