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); } |
我需要使用列表中每个对象的水果名对这个数组列表进行排序
怎样??
使用这样的
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); } }); |
现在,您的水果列表是根据
实现与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 |
试用BeanComparator
1 2 3 | BeanComparator fieldComparator = new BeanComparator( "fruitName"); Collections.sort(fruits, fieldComparator); |