Sådan sorteres en ArrayList i Java

Jeg har en klasse ved navn Frugt. Jeg opretter en liste over denne klasse og tilføjer hver enkelt frugt på listen. Jeg ønsker at sortere denne liste baseret på rækkefølgen af frugtnavnet.

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

og jeg opretter sin liste ved hjælp af 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);
}

og jeg har brug for at sortere denne arrayList ved hjælp af frugtnavnet for hvert objekt på listen

hvordan??

Løsning

Brug en Comparator på denne måde:

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 er din frugtliste sorteret på baggrund af fruitName.

Kommentarer (7)

Implementer Sammenlignelig grænseflade til frugt.

public class Fruit implements Comparable {

Den implementerer metoden

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

Derefter kalder du sorteringsmetoden

Collections.sort(fruitList);
Kommentarer (4)

Prøv BeanComparator fra Apache Commons.

import org.apache.commons.beanutils.BeanComparator;

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