Wie man eine ArrayList in Java sortiert

Ich habe eine Klasse namens Fruit. Ich erstelle eine Liste dieser Klasse und füge jede Frucht in die Liste ein. Ich möchte diese Liste nach der Reihenfolge der Obstnamen sortieren.

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;
    }
}

und ich erstelle die Liste mit einer for-Schleife

List<Fruit>  fruits= new ArrayList<Fruit>();

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

und ich muss diese arrayList anhand des Fruchtnamens eines jeden Objekts in der Liste sortieren

wie??

Lösung

Verwenden Sie einen Vergleicher wie diesen:

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);
        }
    });

Jetzt ist die Liste der Früchte nach dem Fruchtnamen sortiert.

Kommentare (7)

Implementierung der Schnittstelle Vergleichbar zu Fruit.

public class Fruit implements Comparable {

Sie implementiert die Methode

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

Dann rufen Sie die Sortiermethode

Collections.sort(fruitList);
Kommentare (4)

Versuchen Sie BeanComparator von Apache Commons.

import org.apache.commons.beanutils.BeanComparator;

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