[Java] Stream Collectors Hinweis

Persönliche Notizen

Collectors#toMap()

Ich möchte LinkedHashMap verwenden

Ich möchte LikedHashMap explizit verwenden. Ich möchte übrigens doppelte Schlüssel zulassen.

	public static <T, K, V> Collector<T, ?, Map<K, V>> toMap(
			Function<? super T, ? extends K> keyMapper,
			Function<? super T, ? extends V> valueMapper) {

		return Collectors.toMap(
				keyMapper,
				valueMapper,
				(a, b) -> b,
				LinkedHashMap::new);
	}

Lösen Sie eine Ausnahme aus, wenn Sie keine doppelten Schlüssel zulassen möchten.

(a, b) -> { throw new IllegalStateException(~); }

Weitere Informationen finden Sie in den Standard-Collectors # toMap () mit zwei Argumenten.

Ich möchte TreeMap verwenden

Ich möchte natürlich nach Schlüssel sortieren. fast das gleiche.

	public static <T, K, V> Collector<T, ?, Map<K, V>> toTreeMap(
			Function<? super T, ? extends K> keyMapper,
			Function<? super T, ? extends V> valueMapper) {

		return Collectors.toMap(
				keyMapper,
				valueMapper,
				(a, b) -> b,
				TreeMap::new); //★ Hier
	}

Wenn Sie Comparator für TreeMap angeben möchten, geben Sie es mit einem Lambda-Ausdruck anstelle einer Konstruktorreferenz an.

Collectors#toSet()

Ich möchte LinkedHashSet verwenden

Hier geht es darum, toCollection () anstelle von toSet () zu verwenden.

	public static <T> Collector<T, ?, Set<T>> toSet() {
		return Collectors.toCollection(LinkedHashSet::new);
	}

Ich möchte TreeSet verwenden

Grundsätzlich das gleiche.

	public static <T> Collector<T, ?, Set<T>> toTreeSet() {
		return Collectors.toCollection(TreeSet::new);
	}

Collectors#groupingBy

Ich möchte LinkedHashMap verwenden

	public static <T, K> Collector<T, ?, Map<K, List<T>>> groupingBy(
			Function<? super T, ? extends K> classifier) {

		return Collectors.groupingBy(classifier,
				LinkedHashMap::new, //★ Hier
				Collectors.toList());
	}

Ich möchte TreeMap verwenden

das Gleiche.

	public static <T, K> Collector<T, ?, Map<K, List<T>>> orderedGroupBy(
			Function<? super T, ? extends K> classifier) {

		return Collectors.groupingBy(classifier,
				TreeMap::new, //★ Hier
				Collectors.toList());
	}

Ich möchte, dass das Element ein Set anstelle einer Liste ist

... Ich kann mir keinen guten Methodennamen vorstellen.

	public static <T, K> Collector<T, ?, Map<K, Set<T>>> groupingBySet(
			Function<? super T, ? extends K> classifier) {

		return Collectors.groupingBy(classifier,
				TreeMap::new,
				Collectors.toCollection(LinkedHashSet::new)); //★ Hier
	}

Natürlich können je nach Verwendungszweck TreeSet oder gewöhnliche Collectors.toSet () verwendet werden.

Ich möchte auch die Elemente konvertieren, die beim Gruppieren in die Liste gepackt werden sollen

	public static <T, K, D> Collector<T, ?, Map<K, List<D>>> groupingBy(
			Function<? super T, ? extends K> classifier,
			Function<? super T, ? extends D> mapper) {

		return Collectors.groupingBy(classifier,
				LinkedHashMap::new,
				Collectors.mapping(mapper, //★ Hier
						Collectors.toList()));
	}

Natürlich können Sie Set anstelle von List verwenden.

Collectors#collectingAndThen

Wenn Sie eine unveränderliche Karte oder Liste erstellen möchten.

	public static <T, K, V> Collector<T, ?, Map<K, V>> toConstMap(
			Function<? super T, ? extends K> keyMapper,
			Function<? super T, ? extends V> valueMapper) {

		return Collectors.collectingAndThen(
				Collectors.toMap(
					keyMapper,
					valueMapper),
				Collections::unmodifiableMap);
	}

Recommended Posts

[Java] Stream Collectors Hinweis
Java Note
Java Generics (Hinweise)
Probieren Sie Java 8 Stream aus
[Java] Array-Hinweis
Java Stream API
[Java] Studiennotizen
Hinweise zur Java-Serialisierung
Java 8 studieren (Stream)
Java Stream-Beendigung
[Java] Stream-Verarbeitung
Java 9 Optional :: stream
Java-formatierte Ausgabe [Hinweis]
Java 8 studieren (Sammler / Sammler)
[Java] Stream API-Stream-Generierung
Stream-API (Collectors-Klasse)
[Java] Stream API / Map
[Java] Hinweis zur Steuerungssyntax
Überprüfungshinweise zu Java NIO 2
Informationen zur Java8-Stream-Reduzierung
[Java] Grundlegende Methodenhinweise
Grobe Zusammenfassung des Java8-Streams
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Versuchen Sie, mit Java zu kratzen [Hinweis]
Java Stream API Spickzettel
[Implementierung] Java Prozessklassennotizen
Überprüfungshinweise zum Java Collections Framework
Java Stream API in 5 Minuten
Java8-Stream, Zusammenfassung des Lambda-Ausdrucks
[Java] Stream API - Stream-Beendigungsverarbeitung
[Java] Stream API - Stream Zwischenverarbeitung
Java Stream kann nicht wiederverwendet werden.
[Java] Einführung in die Stream-API
[Java11] Stream Usage Summary -Basics-
Java-Anwendung für Anfänger: Stream
[Java] Stream API Zwischenoperation
[Java 8] Doppelte Löschung (& doppelte Überprüfung) mit Stream
[Java] Stream (Filter, Map, ForEach, Reduce)
[java8] Um die Stream-API zu verstehen
[Java] Grundtypen und Anweisungshinweise
Über Lambda, Stream, LocalDate von Java8
[Einführung in Java] Informationen zur Stream-API
[Java] Elementexistenzprüfung mit Stream
Hinweise zur Signalsteuerung in Java
Java
Ich habe versucht, die Java8 Stream API zu verwenden
Grundlegender Verarbeitungsablauf von Java Stream
Java
Java 8 ~ Stream API ~ startet jetzt
Hinweise zum Java-Pfad und -Paket
Java-Array / Liste / Stream gegenseitige Konvertierungsliste
Java8-Listenkonvertierung mit Stream Map
Verwenden Sie Stream in Java?
Datenverarbeitung mit der Stream-API von Java 8
Versuchen Sie es mit der Stream-API in Java
Heutzutage Java Lambda Expressions und Stream API
Mit Java Stream nach mehreren Bedingungen sortieren