web-dev-qa-db-fra.com

Trier une liste d'objets par ordre alphabétique

Je dois créer une méthode qui trie un ArrayList des objets par ordre alphabétique en fonction du courrier électronique, puis affiche le tableau trié. La partie que j'ai du mal à le trier. Je l'ai étudié et essayé d'utiliser Collections.sort(vehiclearray); mais cela n'a pas fonctionné pour moi. J'avais besoin de quelque chose appelé un comparateur mais je ne pouvais pas comprendre comment cela fonctionnait. Devrai-je les utiliser ou puis-je utiliser quelque chose comme le tri à bulle ou le type à insertion pour ce genre de chose?

C'est le code que j'ai jusqu'à présent:

public static void printallsort(ArrayList<vehicle> vehiclearray){

   ArrayList<vehicle> vehiclearraysort = new ArrayList<vehicle>();
   vehiclearraysort.addAll(vehiclearray);

 //Sort
   for(int i = 0; i < vehiclearraysort.size(); i++) 
   if ( vehiclearray.get(i).getEmail() > vehiclearray.get(i+1).getEmail())

//Printing 
   for(i = 0; i < vehiclearraysort.size(); i++)           
   System.out.println( vehiclearraysort.get(i).toString() + "\n");

}
25
Fluxxxy

La partie de tri peut être effectuée en implémentant un Comparator<Vehicle> personnalisé. 

Collections.sort(vehiclearray, new Comparator<Vehicle>() {
    public int compare(Vehicle v1, Vehicle v2) {
        return v1.getEmail().compareTo(v2.getEmail());
    }
});

Cette classe anonyme sera utilisée pour trier les objets Vehicle dans la ArrayList sur la base de leurs courriels correspondants par ordre alphabétique.

La mise à niveau vers Java8 vous permettra également de mettre en œuvre cela de manière moins détaillée avec une référence de méthode:

Collections.sort(vehiclearray, Comparator.comparing(Vehicle::getEmail));
77
Konstantin Yovkov

Même la question a une réponse acceptée Je veux partager une solution Java 8

// if you only want to sort the list of Vehicles on their email address
Collections.sort(list, (p1, p2) -> p1.getEmail().compareTo(p2.getEmail()));

.

// sort the Vehicles in a Stream
list.stream().sorted((p1, p2) -> p1.getEmail().compareTo(p2.getEmail()));

.

// sort and print with a Stream in one go
list.stream().sorted((p1, p2) -> p1.getEmail().compareTo(p2.getEmail())).forEach(p -> System.out.printf("%s%n", p));

.

// sort with an Comparator (thanks @Philipp)
// for the list
Collections.sort(list, Comparator.comparing(Vehicle::getEmail));
// for the Stream
list.stream().sorted(Comparator.comparing(Vehicle::getEmail)).forEach(p -> System.out.printf("%s%n", p));
9
SubOptimal

Dans ce lien, vous pouvez trouver du code qui vous aidera à trier la liste des objets par ordre croissant et décroissant.

- http://beginnersbook.com/2013/12/Java-arraylist-of-object-sort-example-comparable-and-comparable/

0
Lincy Laiju

paquet srikanthdukuntla;

import Java.util.ArrayList; import Java.util.List;

classe publique AlphabetsOrder {

public static void main(String[] args) {

    String temp;
    List<String> str= new ArrayList<String>();

    str.add("Apple");
    str.add("zebra");
    str.add("Umberalla");
    str.add("banana");
    str.add("oxo");
    str.add("dakuntla");
    str.add("srikanthdukuntla");
    str.add("Dukuntla");

    for(int i=0;i<str.size();i++){

        for(int j=i+1;j<str.size();j++){

     if(str.get(i).compareTo(str.get(j))<0){

            temp=str.get(i);
            str.set(i, str.get(j));
            str.set(j,temp );   

     }
        }
    }

  System.out.println("List of words in alphabetical order   "+str);

}

}

0
Srikanth Dukuntla