Comment trier une ArrayList en Java

J'ai une classe nommée Fruit. Je crée une liste de cette classe et j'ajoute chaque fruit dans la liste. Je veux trier cette liste en fonction de l'ordre des noms de fruits.

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 la boucle for

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 ce tableau en utilisant le nom du fruit de chaque objet de la liste.

comment ?

Solution

Utilisez un Comparateur comme ceci :

List fruits= new ArrayList();

Fruit fruit;
for(int i = 0; i < 100; i++)
{
  fruit = new Fruit();
  fruit.setname(...);
  fruits.add(fruit);
}

// Sorting
Collections.sort(fruits, new Comparator() {
        @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.

Commentaires (7)

Implémenter l'interface Comparable à Fruit.

public class Fruit implements Comparable {

Elle implémente la méthode

@Override
    public int compareTo(Fruit fruit) {
        //write code here for compare name
    }

Ensuite, appelez la méthode de tri

Collections.sort(fruitList);
Commentaires (4)

Essayez BeanComparator de Apache [Commons][2].

import org.apache.commons.beanutils.BeanComparator;

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

[2] : https://commons.apache.org/proper/commons-beanutils/apidocs/org/apache/commons/beanutils/BeanComparator.html

Commentaires (0)