web-dev-qa-db-fra.com

Comment trier une ArrayList dans Java

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??

214
ranjith

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.

413
Prabhakaran

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);
89
bNd

Essayez BeanComparator à partir d'Apache Commons .

import org.Apache.commons.beanutils.BeanComparator;


BeanComparator fieldComparator = new BeanComparator("fruitName");
Collections.sort(fruits, fieldComparator);
14
newuser