Πώς να ταξινομήσετε μια λίστα ArrayList στη Java

Έχω μια κλάση με το όνομα Fruit. Δημιουργώ μια λίστα αυτής της κλάσης και προσθέτω κάθε φρούτο στη λίστα. Θέλω να ταξινομήσω αυτή τη λίστα με βάση τη σειρά του ονόματος του φρούτου.

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

και δημιουργώ τη λίστα χρησιμοποιώντας βρόχο for

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

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

και πρέπει να ταξινομήσω αυτό το arrayList χρησιμοποιώντας το όνομα φρούτων κάθε αντικειμένου στη λίστα

Πώς;

Λύση

Χρησιμοποιήστε έναν Comparator όπως αυτός:

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

Τώρα η λίστα με τα φρούτα σας είναι ταξινομημένη με βάση το Όνομα φρούτου.

Σχόλια (7)

Εφαρμόστε τη διεπαφή Comparable για Fruit.

public class Fruit implements Comparable {

Υλοποιεί τη μέθοδο

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

Τότε καλέστε τη μέθοδο ταξινόμησης

Collections.sort(fruitList);
Σχόλια (4)

Δοκιμάστε το BeanComparator από το Apache Commons.

import org.apache.commons.beanutils.BeanComparator;

BeanComparator fieldComparator = new BeanComparator("fruitName");
Collections.sort(fruits, fieldComparator);
Σχόλια (0)