Tri par ordre lexicographique

Résolu
Bonjour,

Je suis débutant en java et j'essaye en ce moment de trier un tableau de string par ordre lexicographique. J'ai essayer avec compareTo,.. mais pas moyen de compiler.
J'essaye en fait de faire une procédure d'un programme plus grand mais je bloque sur ce morceau du puzzle. Si vous avez des conseils, des idées,.. N'hésitez par à partager :)

Voici un exemple de ce que je veux trier:

String achat[]=new String[10];
		achat[0] = "coca";
		achat[1] = "shampoing";
		achat[2] = "cocaa";
		achat[3] = "yahourt";
		achat[4] = "b";
		achat[5] = "zertyucoca";
		achat[6] = "DANETTE";
		achat[7] = "coca";
		achat[8] = "choco";
		achat[9] = "lait";

3 réponses

  1. Modérateur
    Tu as des méthodes utiles dans la classe Arrays :

    import java.util.Arrays;
    
    public class Main 
    {
    public static void main(String[] args)
    {
    	String achat[] = {"coca", "shampoing", "cocaa", "yahourt", "b", "zertyucoca","DANETTE", "coca", "choco", "lait"};
    	System.out.println(Arrays.toString(achat));
    	Arrays.sort(achat);
    	System.out.println(Arrays.toString(achat));
    }
    }

    Remarque : l'ordre lexicographique en Java signifie l'ordre des caractères UTF-16. Pour l'ordre alphabétique il faut s'y prendre autrement, en implémentant un Comparator :

    Arrays.sort(achat,new Comparator<String>()
    {
        @Override
        public int compare(String str1, String str2) 
        {
            int x = str1.compareTo(str2); // comportement par défaut
            return x; // x<0 si str1<str2, x==0 si str1==str2, x>0 si str1>str2
        }
    });
    -1