Comment trier un ArrayList en Java [dupliquer]

cette question a déjà une réponse ici:

J'ai une classe appelé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 de fruit le nom.

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 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 je dois trier cet arrayList en utilisant le nom de fruit de chaque objet dans la liste

comment??

202
demandé sur dream_world 2013-08-26 14:20:05

3 réponses

utiliser 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 .

399
répondu Prabhakaran 2016-01-28 09:19:11

mettre en Œuvre Comparables interface de Fruits.

public class Fruit implements Comparable<Fruit> {

il met en œuvre la méthode

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

, Puis de faire appel de méthode de tri

Collections.sort(fruitList);
87
répondu bNd 2015-10-05 10:33:53

Try BeanComparator

BeanComparator fieldComparator = new BeanComparator(
                "fruitName");
Collections.sort(fruits, fieldComparator);
12
répondu newuser 2013-08-26 10:27:39