首页 文章

如何在Java中对ArrayList进行排序[重复]

提问于
浏览
205

这个问题在这里已有答案:

我有一个名为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进行排序

怎么样??

3 回答

  • 12

    像这样使用 Comparator

    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 排序 .

  • 404

    实现 Comparable 接口到Fruit .

    public class Fruit implements Comparable<Fruit> {
    

    它实现了该方法

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

    然后调用sort方法

    Collections.sort(fruitList);
    
  • 87

    试试BeanComparator

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

相关问题