2 votes

Y a-t-il un moyen que je puisse assortir cette ArrayList pour que burger1 se retrouve en position 1?

Je veux faire correspondre l'ArrayList pour que le bon Burgare obtienne la bonne position, par exemple Burgare6 obtient la position 6 et Burgare2 obtient la position 2, et ainsi de suite.

public static void main(String[] args) {

   List burgare = Arrays.asList("1: Burgare 6", "2: Burgare 7", "3: Burgare 2",
                                        "4: Burgare 1", "5: Burgare 3", "6: Burgare 4", 
                                        "7: Burgare 5");

    System.out.println(burgare);

}

4voto

vikingsteve Points 6357

Voici.

    Comparator lastNumberComparator = new Comparator() {
        @Override
        public int compare(String o1, String o2) {
            return Integer.valueOf(o1.split(" ")[2]).compareTo(Integer.valueOf(o2.split(" ")[2]));
        }
    };

    Collections.sort(burgare, lastNumberComparator);
    System.out.println(burgare);

En utilisant String.split(" ") avec des espaces, vous pouvez rapidement diviser vos chaînes de caractères en trois jetons "4:", "Burgare", "1" où le dernier jeton [2] est la valeur que nous utilisons pour trier.

1voto

Nicholas K Points 6627

Vous pouvez simplement utiliser :

Collections.sort(burgare, new Comparator() {
    @Override
    public int compare(String str1, String str2) {
       return Integer.valueOf(str1.split(" ")[2])
                     .compareTo(Integer.valueOf(str2.split(" ")[2]));
    }
});

Si vous utilisez java-8 alors :

Collections.sort(burgare, (str1, str2) -> 
         Integer.valueOf(str1.split(" ")[2]).compareTo(Integer.valueOf(str2.split(" ")[2])));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X