关于排序:如何在Java中对ArrayList进行排序

How to sort an ArrayList in Java

本问题已经有最佳答案,请猛点这里访问。

我有一个叫水果的班。我正在创建这个类的列表,并在列表中添加每个水果。我想根据水果名称的顺序对这个列表进行排序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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循环创建它的列表

1
2
3
4
5
6
7
8
9
List<Fruit>  fruits= new ArrayList<Fruit>();

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

我需要使用列表中每个对象的水果名对这个数组列表进行排序

怎样??


使用这样的Comparator

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
List<Fruit> fruits= new ArrayList<Fruit>();

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

// Sorting
Collections.sort(fruits, new Comparator<Fruit>() {
        @Override
        public int compare(Fruit fruit2, Fruit fruit1)
        {

            return  fruit1.fruitName.compareTo(fruit2.fruitName);
        }
    });

现在,您的水果列表是根据fruitName进行排序的。


实现与Fruit类似的接口。

1
public class Fruit implements Comparable<Fruit> {

它实现了这个方法

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

然后调用排序方法

1
Collections.sort(fruitList);


试用BeanComparator

1
2
3
BeanComparator fieldComparator = new BeanComparator(
               "fruitName");
Collections.sort(fruits, fieldComparator);