Table des matières
Grammaire
Exemple
Méthode
Sortie
Conclusion
Maison Java javaDidacticiel Comment trouver des éléments en double dans un flux en Java

Comment trouver des éléments en double dans un flux en Java

Sep 06, 2023 pm 03:57 PM
java 查找 Éléments répétitifs

Comment trouver des éléments en double dans un flux en Java

La recherche d'éléments en double dans un flux de données est l'une des questions courantes lors des entretiens Java et même de nombreux examens d'étudiants. Java fournit une variété de méthodes pour rechercher les éléments en double. Nous nous concentrons principalement sur deux méthodes : la première consiste à utiliser le Set du Java Collection Framework et l'autre consiste à utiliser la méthode intégrée Collections.Frequency() du flux. .

Programme Java pour rechercher des éléments en double dans un flux

Avant d'aborder les différentes méthodes permettant d'obtenir des doublons à partir d'une collection de données, il est nécessaire de discuter de la méthode filter(). Ce sera une partie importante de l’exemple de programme.

filtre()

Cela nous permet de filtrer les éléments du flux en fonction de conditions spécifiées. Cela fait partie d'une fonction d'ordre supérieur qui applique un certain comportement au terme de flux. Cette méthode prend un prédicat comme paramètre et renvoie une liste d'éléments qui correspondent au prédicat.

Grammaire

                
filter(predicate);
Copier après la connexion

Utilisation du framework de collection Java

Il s'agit d'une sous-interface de Java Collection Interface et n'autorise pas les valeurs en double. C'est très similaire aux ensembles mathématiques. Nous pouvons utiliser la méthode add() qui ajoute uniquement les éléments différents à l’ensemble. Pour utiliser les propriétés de l'interface Set, nous devons utiliser la classe HashSet qui implémente cette interface.

Exemple

L'exemple suivant illustre comment utiliser l'interface Set pour rechercher des éléments en double dans un flux.

Méthode

  • Utilisez la méthode Arrays.asList() pour créer une liste afin de stocker une liste de taille fixe.

  • Ensuite, utilisez la classe HashSet pour définir un Set afin de stocker uniquement les éléments différents.

  • Maintenant, utilisez la méthode filter() avec stream() et forEach() pour filtrer uniquement les éléments en double. Ici, stream() spécifie l'entrée sous la forme d'un flux et nous utiliserons forEach() pour itérer et imprimer les éléments répétés.

import java.util.*;
public class Duplicate {
   public static void main(String []args) {
      // create a list with duplicate items
      List<Integer> itemsList = Arrays.asList(10, 12, 10, 33, 40, 40, 61, 61);
      // declaring a new Set 
      Set<Integer> newitemSet = new HashSet<>();
      System.out.println("The list of duplicate Items: ");
      itemsList.stream() // converting list to stream
         .filter(nums -> !newitemSet.add(nums)) // to filter out the elementsthat are not added to the set
         .forEach(System.out::println); // print the duplicates
   }
}
Copier après la connexion

Sortie

The list of duplicate Items: 
10
40
61
Copier après la connexion

Utilisez la méthode Collections.Frequency()

Un autre moyen le plus simple de filtrer les éléments en double d'un flux ou d'une collection consiste à utiliser la méthode Collections.Frequency() du package "java.util", qui est utilisée pour renvoyer le nombre total d'éléments dans la collection spécifiée.

Grammaire

Collections.frequency(nameOfCollection, obj);
Copier après la connexion

ici,

nameOfCollection représente le flux et obj représente l'élément dont la fréquence doit être déterminée.

Exemple

Dans l'exemple ci-dessous, nous utiliserons la méthode Collections.Frequency() pour compter les occurrences de chaque élément dans le flux, puis renverrons les éléments qui apparaissent plus d'une fois. Nous imprimerons la liste complète des occurrences d’éléments répétés ainsi que le décompte.

import java.util.*;
public class FindDuplicates {
   public static void main(String[] args) {
      // create a list with duplicate items
      List<Integer> itemslist = Arrays.asList(10, 12, 10, 10, 33, 40, 40, 61, 61);
      System.out.println("The list of duplicate Items with frequency: ");
      itemslist.stream() // converting list to stream 
         .filter(itr -> Collections.frequency(itemslist, itr) > 1) // checking the frequency of duplicate items
         .forEach(System.out::println); // printing the frequency of duplicate items
      System.out.println("Count of duplicate items: ");    
      // to count the duplicate items    
      System.out.println(itemslist.stream()
       .filter(itr -> Collections.frequency(itemslist, itr) > 1)
       .count());
    }
}
Copier après la connexion

Sortie

The list of duplicate Items with frequency: 
10
10
10
40
40
61
61
Count of duplicate items: 
7
Copier après la connexion

Exemple

Voici un autre exemple où nous utiliserons à la fois la méthode Set Interface et Collections.Frequency() pour obtenir uniquement les éléments en double. La méthode Collections.Frequency() comptera les occurrences de chaque élément dans le flux, puis collectera les éléments dont le nombre est supérieur à 1 dans un ensemble pour supprimer les doublons. L’ensemble résultant contiendra uniquement des éléments répétés du flux.

import java.util.stream.*;
import java.util.*;
public class FindDuplicates {
   public static void main(String[] args) {
      // create a list with duplicate items
      List<Integer> itemslist = Arrays.asList(10, 12, 10, 10, 33,40, 40, 61, 61);
      // set to store duplicate items
      Set<Integer> duplicates = itemslist.stream()
         .filter(itr -> Collections.frequency(itemslist, itr) > 1) // checking the frequency of duplicate items
         .collect(Collectors.toSet()); // adding only duplicate items to set
      // printing the duplicate items    
      System.out.println("The list of duplicate Items:" + duplicates); 
   }
}
Copier après la connexion

Sortie

The list of duplicate Items:[40, 10, 61]
Copier après la connexion

Conclusion

Dans cette section, nous conclurons notre discussion avec quelques points clés tirés des exemples et concepts ci-dessus. Nous pouvons utiliser la méthode filter() pour filtrer des types spécifiques d'éléments de la collection de données. Il fonctionne en coulisses en appliquant un prédicat à chaque élément. La capacité de Set Interface à stocker uniquement des éléments distincts en fait un excellent choix pour une tâche donné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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Racine carrée en Java Racine carrée en Java Aug 30, 2024 pm 04:26 PM

Guide de la racine carrée en Java. Nous discutons ici du fonctionnement de Square Root en Java avec un exemple et son implémentation de code respectivement.

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Guide du générateur de nombres aléatoires en Java. Nous discutons ici des fonctions en Java avec des exemples et de deux générateurs différents avec d'autres exemples.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro Armstrong en Java Numéro Armstrong en Java Aug 30, 2024 pm 04:26 PM

Guide du numéro Armstrong en Java. Nous discutons ici d'une introduction au numéro d'Armstrong en Java ainsi que d'une partie du code.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

See all articles