Tri d'une liste D'objets par ordre alphabétique
j'ai créer une méthode qui trie une ArrayList d'objets en ordre alphabétique selon l'email et imprime ensuite le tableau trié. La partie où j'ai du mal à la Trier. J'ai fait des recherches et ai essayé à l'aide de Collections.sort(vehiclearray);
mais ça n'a pas marché pour moi. J'avais besoin d'un comparateur, mais je ne comprenais pas comment ça marchait. Devrai-je utiliser ceux-ci ou quelque chose comme bulle de tri ou le tri par insertion travail pour ce genre de chose?
voici 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");
}
4 réponses
la partie de tri peut être faite en implémentant un custom Comparator<Vehicle>
.
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 Vehicle
objets ArrayList
sur la base de leurs e-mails par ordre alphabétique.
mise à jour de Java8 vous permettra également de mettre en œuvre ce dans un moins verbeux avec une méthode de référence:
Collections.sort(vehiclearray, Comparator.comparing(Vehicle::getEmail));
même la question a une réponse acceptée je veux partager quelque 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 arraylist d'objets dans l'ordre décroissant et ascendant.
http://beginnersbook.com/2013/12/java-arraylist-of-object-sort-example-comparable-and-comparator/
package srikanthdukuntla;
import java.util.ArrayList; importer java.util.Liste;
public class 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);
}
}