Duplikatprüfung für Java8-Stream (ordentlich mit Collector schreiben)

Als Methode zum Zählen doppelter Elemente gibt es eine Methode, einen Stream zu einer Liste zu machen, die Länge abzurufen und ihn dann in ein Set zu setzen, um die Längen zu vergleichen, aber ich bin nicht sehr glücklich, weil er nicht wie die Stream-API aussieht. Sie können mit einem guten Gefühl schreiben, indem Sie einen Collector erstellen.

static<T> Collector<T,?,Boolean> uniqueElements(){
    Set<T> set = new HashSet<>();
    return Collectors.reducing(true, set::add, Boolean::logicalAnd);
}

Wenn Sie mit parallelen Streams arbeiten, empfiehlt es sich, eine thread-sichere Sammlung zu verwenden.

Die tatsächliche Verwendung ist wie folgt;

@Test
public void testUniqueElements(){
    assertTrue(Stream.of("a","b","c").collect(uniqueElements()));
    assertFalse(Stream.of("a","b","b").collect(uniqueElements()));
}
static<T> Collector<T,?,Boolean> uniqueElements(){
    Set<T> set = new HashSet<>();
    return Collectors.reducing(true, set::add, Boolean::logicalAnd);
}

das ist alles.

Recommended Posts

Duplikatprüfung für Java8-Stream (ordentlich mit Collector schreiben)
[Java 8] Doppelte Löschung (& doppelte Überprüfung) mit Stream
[Java] Elementexistenzprüfung mit Stream
Ich habe versucht, die Java8 Stream API zu verwenden
Datenverarbeitung mit der Stream-API von Java 8
Versuchen Sie es mit der Stream-API in Java
Mit Java Stream nach mehreren Bedingungen sortieren
Schreiben Sie Selenium Java-Bindungscode mit Silk WebDriver
Probieren Sie Java 8 Stream aus
Java-Versionsprüfung
Java Stream API
Java-Überprüfungsprozess
Java 8 studieren (Stream)
Java Stream-Beendigung
[Java] Stream-Verarbeitung
Java 9 Optional :: stream