Java'da bir ArrayList nasıl sıralanır

Meyve adında bir sınıfım var. Bu sınıftan bir liste oluşturuyorum ve her bir meyveyi listeye ekliyorum. Bu listeyi meyve adının sırasına göre sıralamak istiyorum.

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

ve for döngüsünü kullanarak listesini oluşturuyorum

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

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

ve bu arrayList'i listedeki her nesnenin meyve adını kullanarak sıralamam gerekiyor

Nasıl?

Çözüm

Bunun gibi bir Comparator kullanın:

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

Artık meyve listeniz meyveAdına göre sıralanmıştır.

Yorumlar (7)

Fruit için Comparable arayüzünü uygulayın.

public class Fruit implements Comparable {

Yöntemi uygular

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

Ardından sıralama yöntemini çağırın

Collections.sort(fruitList);
Yorumlar (4)

Apache Commons'dan BeanComparator'ı deneyin.

import org.apache.commons.beanutils.BeanComparator;

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