Comptage d'un element dans une liste

Résolu/Fermé
adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018 - Modifié le 30 oct. 2017 à 11:47
adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018 - 2 nov. 2017 à 16:57
Bonjour tout le monde,
j'avais implémente une méthode qui permettait de compter le nombre de fois q'un élément dans une liste des entiers se répété. suite a ça, j'avais une méthode qui s'appel compte auquel je passe en paramétré une de liste des entière, la méthode parcourt l'ensemble des éléments du liste, mais je veux que la méthode en parcourant l’intégralité de la liste, qu'elle me dise le nombre de fois qu'un nombre qui se trouve dans la liste se répété. mais je crois ma méthode ne satisfait pas mon besoin je voudrait que vous jetiez un coup d’œil avec moi la méthode et d'ailleurs si vous en avez une dites mois des suggestion j'en ai absolument MERCI d'avance.
voici le corps de la méthode
public static void compte(List<Integer> l) {
  //pour avoir le nombre des fois qu'un numero se repete dans la lecture
  int ncompte = 0;
  //pour stocker le numero qu'on veut savoir evaluer sa repetition
  int codeIntermediaire = 0;
  
  int indice = 0;
  
  System.out.println("la taille de la liste en question " + l.size());
  for (int i = 0; i < l.size(); i++) {
   codeIntermediaire = l.get(i).intValue();
   for(int j = 0; j<l.size();++j){
    if(codeIntermediaire == l.get(j).intValue()){
     ncompte++;
     
    }
   }
   
  }

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
30 oct. 2017 à 12:18
Bonjour,

Tu peux utiliser la méthode suivante qui compte le nombre d’occurrences de chaque valeur :

// import java.util.Map; java.util.function.Function; java.util.stream.Collectors; java.util.stream.Stream;
public static <E> Map<E, Long> count(Stream<E> stream) {
    return stream.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
}

Exemple :
System.out.println(count(Stream.of("a", "b", "a", "c", "a", "c")));
// {a=3, b=1, c=2}

Ou dans ton cas :
List<Integer> list = Arrays.asList(1, 2, 1, 3, 1, 3);
System.out.println(count(list.stream())); // {1=3, 2=1, 3=2}
0
adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018
30 oct. 2017 à 13:42
je viens d'essayer mais je crois que j'ai des probleme d'import des packet pour le methode count il dit import java.util.function.Function canot be resolved de la meme maniere pour le Stream et le Collectors je crois qu'il trouve pas les bons packets et du coup j'essayer de chercher sur l'internet j'y trouve pas
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
30 oct. 2017 à 13:55
Tu codes avec quelle version de Java ?

Ces packages sont disponibles en Java 8 et Java 9, mais si tu utilises des versions plus anciennes c'est normal qu'ils n'existent pas.
0
adamsjilal Messages postés 46 Date d'inscription lundi 14 mars 2016 Statut Membre Dernière intervention 29 avril 2018
Modifié le 2 nov. 2017 à 16:58
yes, ca a marcher Merci beaucoup...
0