ran*_*ith 217 java sorting collections arraylist
我有一个名为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;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用for循环创建它的列表
List<Fruit> fruits= new ArrayList<Fruit>();
Fruit fruit;
for(int i=0;i<100;i++)
{
fruit = new fruit();
fruit.setname(...);
fruits.add(fruit);
}
Run Code Online (Sandbox Code Playgroud)
我需要使用列表中每个对象的水果名称对此arrayList进行排序
怎么样??
Pra*_*ran 417
使用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);
}
});
Run Code Online (Sandbox Code Playgroud)
现在你的水果列表是根据fruitName.
bNd*_*bNd 89
实现Fruit的Comparable接口.
public class Fruit implements Comparable<Fruit> {
Run Code Online (Sandbox Code Playgroud)
它实现了该方法
@Override
public int compareTo(Fruit fruit) {
//write code here for compare name
}
Run Code Online (Sandbox Code Playgroud)
然后调用sort方法
Collections.sort(fruitList);
Run Code Online (Sandbox Code Playgroud)
new*_*ser 15
import org.apache.commons.beanutils.BeanComparator;
BeanComparator fieldComparator = new BeanComparator("fruitName");
Collections.sort(fruits, fieldComparator);
Run Code Online (Sandbox Code Playgroud)