Maison > Java > javaDidacticiel > Comment puis-je obtenir toutes les valeurs maximales d'un flux Java ?

Comment puis-je obtenir toutes les valeurs maximales d'un flux Java ?

Patricia Arquette
Libérer: 2024-12-08 12:37:12
original
543 Les gens l'ont consulté

How Can I Get All Maximum Values from a Java Stream?

Maximiser toutes les valeurs dans un flux Java

Problème :
La fonction max de Java dans les expressions et les flux lambda renvoie généralement un élément arbitraire lorsque plusieurs candidats sont à égalité pour la valeur maximale. Cela peut être indésirable lorsque le comportement souhaité est de renvoyer toutes les valeurs maximales.

Solution :

Il n'existe actuellement aucun moyen direct d'obtenir ce comportement sans collecter explicitement des résultats partiels. dans une collection. Voici deux approches possibles :

Approche en deux passes (Collection) :

  1. Déterminez la valeur maximale à l'aide de mapToInt(String::length).max( ).
  2. Filtrer le flux d'entrée pour obtenir tous les éléments qui correspondent au maximum longueur.

Approche basée sur un collecteur (passe unique) :

  1. Créez un collecteur personnalisé à l'aide de la méthode maxList :

    static <T> Collector<T, ?, List<T>> maxList(Comparator<? super T> comp) {
     // Implementation given in the reference answer
    }
    Copier après la connexion
  2. Utilisez le collecteur pour rassembler tous les éléments ayant la valeur maximale en un seul pass.

Exemple :

Utilisation de l'approche basée sur le collecteur :

Stream<String> input = ... ;

List<String> result = input.collect(maxList(comparing(String::length)));
Copier après la connexion

Cela renverra une liste contenant toutes les chaînes avec la longueur maximale dans le flux d'entrée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal