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");
}
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));
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));
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/
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);
}
}