Maniputation arralist java

Bonjour,

j'ai une arraylist qui contient : (informatique, informatique, informatique, électricité, électricité)
et une autre qui contient leur signification (2.14, 2.14, 2.14, 1.64, 1.64)

je voudrais obtenir une arraylist qui va contenir que (informatique, électricité) et une autre (2.14, 1.64)

j'utilise java

aidez moi s'il vous plait .

MERCI

7 réponses

  1. en gros tu veux supprimer les doublons ???

    si c'est le cas je te conseille d'utiliser ce code-ci

    ArrayList list = new ArrayList() ;
    list.add(...);
    Set set = new HashSet() ;
    set.addAll(list) ;
    ArrayList distinctList = new ArrayList(set) ;
    1. Effectivement, il faut initialiser les tableaux avant.
      Ce code marche, je l'ai testé:

      public class main {
      	public static void main(String[] args) {
      		String[] listNom = {"informatique", "informatique", "informatique", "électricité", "électricité"};
      		String[] listMeaning = {"2.14", "2.14", "2.14", "1.64", "1.64"};
      		String[] listNomSansDoublons = new String[5];
      		String[] listMeaningSansDoublons = new String[5];
      		
      		for (int i = 0; i < listNom.length; i++){
      			boolean absent = true;
      			int taille = 0;
      			String nom = listNom[i];
      			String meaning = listMeaning[i];
      			for (int j = 0; j < listNomSansDoublons.length; j++){
      				if (nom == listNomSansDoublons[j]){
      					absent = false;
      				}
      			}
      			if(absent){
      				listNomSansDoublons[taille] = nom;
      				listMeaningSansDoublons[taille] = meaning;
      				taille++;
      				System.out.println(nom+meaning);
      			}
      		}		
      	}
      }
      
      
      1. C'est intéressant de montrer une démarche algorithmique mais l'API Java offre des classes plus optimisées
      2. Modérateur
        Plus optimisées, plus simples, mais surtout plus génériques... après tout, c'est de l'orienté objet !
      3. Plus simples d'utilisation oui !
        Je te rejoins à 100% sur l'orientation objet, j'en ai marre de voir du procédural dans un langage aussi riche que le Java
    2. je vous remercie pour votre aide, c trés gentil de votre part
      1. C'est normal, pense à mettre le sujet en résolu
    3. Modérateur
      Et pourquoi ne pas utiliser tout simplement les Collections ?

      import java.util.ArrayList;
      import java.util.Collection;
      
      public class Test
      {
         public static <E> Collection<E> sansDoublon(Collection<E> donnees, Collection<E> resultat)
         {
            for (E e : donnees)
               if (!resultat.contains(e))
                  resultat.add(e);
            return resultat;
         }
         
         public static void main(String args[])
         {
            ArrayList<String> liste1 = new ArrayList<String>();
               liste1.add("informatique");
               liste1.add("informatique");
               liste1.add("électricité");
               liste1.add("informatique");
               liste1.add("électricité");
               
            for (String s : sansDoublon(liste1, new ArrayList<String>()))
               System.out.println(s);
         }
      }
      1. Modérateur
        Ou alors en reprenant l'idée de remousse :

        public static <E> Collection<E> sansDoublon(Collection<E> donnees)
        {
           return new HashSet<E>(donnees);
        }
    4. Une ArrayList c'est une java.util.ArrayList, c'est une classe
      Un élément d'ArrayList s'obtient par .get(indice)

      Visiblement tu parles de tableau, ça ne s'appelle pas ArrayList [] mais rien d'autre qu'un tableau

      Tu peux produire un HashSet (aucun doublon) à partir d'un de ces tableaux primitifs :
      List list = Arrays.asList(new String[] {"Informatique", "Informatique", "Electronique"}); 
      Set set = new HashSet(); 
      set.addAll(list);  
      


      Attention : code non testé
      1. Salut,

        Moi je mettrais un truc de ce genre si tu utilise les arraylist comme des tableau:

        public class main {
        	public static void main(String[] args) {
        		String[] listNom = {"informatique", "informatique", "informatique", "électricité", "électricité"};
        		String[] listMeaning = {"2.14", "2.14", "2.14", "1.64", "1.64"};
        		String[] listNomSansDoublons = {};
        		String[] listMeaningSansDoublons = {};
        		
        		for (int i = 0; i < listNom.length; i++){
        			boolean absent = true;
        			String nom = listNom[i];
        			String meaning = listMeaning[i];
        			for (int j = 0; j < listNomSansDoublons.length; j++){
        				if (nom == listNomSansDoublons[j]){
        					absent = false;
        				}
        			}
        			if(absent){
        				listNomSansDoublons[listNomSansDoublons.length] = nom;
        				listMeaningSansDoublons[listMeaningSansDoublons.length] = meaning;
        			}
        		}		
        	}
        }
        
        1. je te remercie pour la reponse, j'essaye d'appliquer ton algorithme pour mon cas, mais je vois que pour la premiere entrée dans la deuxieme boucle "for (int j = 0; j < listNomSansDoublons.length; j++){" la listNomSansDoublons[j] pointe vers le null car elle contient rien

          comment faire s'il vous plait
      2. je te remercie pour ta reponse, mais j'ai du preciser un chose c'est que je travaille avec les ArrayList [] avec indice, et la j'arrive pas a faire marcher ton code, svp une solution pour mon cas

        Merci