Vérification de duplication de flux Java8 (écrire proprement à l'aide de Collector)

En tant que méthode de comptage des éléments en double, il existe une méthode pour créer une liste Stream, obtenir la longueur, puis la placer dans un ensemble pour comparer les longueurs, mais je ne suis pas heureux car cela ne ressemble pas à l'API Stream. Vous pouvez écrire avec un bon feeling en créant un Collector.

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

Lorsque vous traitez avec des flux parallèles, il est judicieux d'utiliser une collection Thread safe.

L'utilisation réelle est la suivante;

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

c'est tout.

Recommended Posts

Vérification de duplication de flux Java8 (écrire proprement à l'aide de Collector)
[Java 8] Suppression en double (et vérification en double) avec Stream
[Java] Vérification de l'existence des éléments avec Stream
J'ai essayé d'utiliser l'API Java8 Stream
Traitement des données à l'aide de l'API de flux de Java 8
Essayez d'utiliser l'API Stream en Java
Trier par plusieurs conditions à l'aide de Java Stream
Ecrire du code de liaison Selenium Java à l'aide de Silk WebDriver
Essayez Java 8 Stream
Vérification de la version Java
API Java Stream
Processus de vérification Java
Étudier Java 8 (Stream)
Terminaison du flux Java
[Java] Traitement de flux
Java 9 Facultatif :: stream