Partage
  • Partager sur Facebook
  • Partager sur Twitter

trier d'u arrayList

Sujet résolu
Anonyme
    3 mai 2012 à 15:11:19

    salut!! :)

    je veux trier un arrayList ou chaque case contient deux int:
    poid val (exemple: 15 18 / 32 8 / 10 18 / 25 1 / ..... )

    et je veux que ma liste soit trier par ordre decroissant du champs val et que si un val se trouve plusieurs fois il sera trier par ordre croissant, dans l'exemple preced je dois avoir :

    25 1 / 32 8 / 10 18 / 15 18 o_O

    pouvez vous me dire qu'est ce que je dois faire??

    pour le moment jn'arrive qu'a trier cette liste par ordre decroissant des poids avec (Collections.sort)

    merci d'avance ^^
    • Partager sur Facebook
    • Partager sur Twitter
      3 mai 2012 à 15:43:14

      Tu vois il y a un second paramètre possible dans sort :

      Collections.sort(lacollection, new Comparator<TaClasse>() {
      
      	@Override
      	public int compare(TaClasse o1, TaClasse o2) {
      		//et ici tu implémentes la logique pour trier
      	}
      });
      

      Je te suggère de lire la javadoc pour savoir quoi renvoyer.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        3 mai 2012 à 15:53:30

        justement j'ai essayer cette methode +ieurs fois mais j'arrive pas a implémenter
        compare(); elle fait rien malgré que j'ai essayer de differentes manieres (suivant un tuto ou des inplémentation sur net en les modifiant)

        ma liste reste la meme et j'avoue que j'arrive meme pas a bien comprendre le principe de cette methode o_O

        voici mon dernier code

        Collections.sort(list, new Comparator<String>()
        	            		{
        	            	public int compare(String x, String y) {
        	            		
        	            		return Integer.toString(def(x,2)).compareTo(Integer.toString((def(y,2))));
        	            	}
        	            		});
        
        • Partager sur Facebook
        • Partager sur Twitter
          3 mai 2012 à 16:27:13

          Je suis d'humeur magnanime cette après-midi, j'explique :

          Tu as 2 entiers. Poids et val.
          On va dire quelles sont rassemblées dans une classe :
          class Value {
          
              int poid;
              int val;
          
              public Value(int poid, int val) {
                  this.poid = poid;
                  this.val = val;
              }
          
              //Les getters
          
          }
          


          Après tu as une collection de Value.

          List<Value> values = new ArrayList<Value>();
          
          values.add(new Value(15, 18));
          values.add(new Value(32, 8));
          values.add(new Value(10, 18));
          values.add(new Value(25, 1));
          
          Collections.sort(values, new Comparator<Value>() {
          
          	@Override
          	public int compare(Value o1, Value o2) {
          	    int res = o1.getVal() - o2.getVal();
                      //Le resultat est egal à 0 les valeurs sont les mêmes
                      //on prend le poids pour trier
          	    return (res == 0) ? res = o1.getPoid() - o2.getPoid() : res;
          				
          	}
          });
          


          Et voila.
          • Partager sur Facebook
          • Partager sur Twitter

          trier d'u arrayList

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown