Hoe sorteer je een ArrayList in Java

Ik heb een klasse met de naam Fruit. Ik maak een lijst van deze klasse en voeg elk fruit toe aan de lijst. Ik wil deze lijst sorteren op basis van de volgorde van de fruitnaam.

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

en ik maak de lijst met behulp van for loop

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

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

en ik moet deze arrayList sorteren op de fruitnaam van elk object in de lijst

hoe?

Oplossing

Gebruik een Comparator zoals dit:

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

Nu is je fruitlijst gesorteerd op fruitName.

Commentaren (7)

Implementeer Vergelijkbaar interface naar Fruit.

public class Fruit implements Comparable {

Het implementeert de methode

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

Roep dan de sorteermethode

Collections.sort(fruitList);
Commentaren (4)

Probeer BeanComparator van Apache Commons.

import org.apache.commons.beanutils.BeanComparator;

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