J'ai une classe appelée Fruit. Je crée une liste de cette classe et ajoute chaque fruit dans la liste. Je veux trier cette liste en fonction de l'ordre du nom du fruit.
public class Fruit{
private String fruitName;
private String fruitDesc;
private int quantity;
public String getFruitName() {
return fruitName;
}
public void setFruitName(String fruitName) {
this.fruitName = fruitName;
}
public String getFruitDesc() {
return fruitDesc;
}
public void setFruitDesc(String fruitDesc) {
this.fruitDesc = fruitDesc;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
et je crée sa liste en utilisant pour la boucle
List<Fruit> fruits= new ArrayList<Fruit>();
Fruit fruit;
for(int i=0;i<100;i++)
{
fruit = new fruit();
fruit.setname(...);
fruits.add(fruit);
}
et j'ai besoin de trier cette arrayList en utilisant le nom du fruit de chaque objet de la liste
comment??
Utilisez un Comparator
comme ceci:
List<Fruit> fruits= new ArrayList<Fruit>();
Fruit fruit;
for(int i = 0; i < 100; i++)
{
fruit = new Fruit();
fruit.setname(...);
fruits.add(fruit);
}
// Sorting
Collections.sort(fruits, new Comparator<Fruit>() {
@Override
public int compare(Fruit fruit2, Fruit fruit1)
{
return fruit1.fruitName.compareTo(fruit2.fruitName);
}
});
Maintenant, votre liste de fruits est triée sur la base de fruitName
.
Implémenter Comparable interface à Fruit.
public class Fruit implements Comparable<Fruit> {
Il implémente la méthode
@Override
public int compareTo(Fruit fruit) {
//write code here for compare name
}
Puis appelez la méthode de tri
Collections.sort(fruitList);
Essayez BeanComparator à partir d'Apache Commons .
import org.Apache.commons.beanutils.BeanComparator;
BeanComparator fieldComparator = new BeanComparator("fruitName");
Collections.sort(fruits, fieldComparator);