如果将集合中的对象进行排序,最近使用了一个简单的方法解决了,随笔记下来。
主要思路:
首先,新建类实现Comparator<?>,这个类是做比较的关键类,一般做比较的类型 int 或 String类型。
如果属性为Int类型比较方式为 rhs.getAge() - lhs.getAge();
如果属性为String类型方式为 rhs.getName.compareTo(lhs.Name);
以上为降序写法, 如果是升序将 rhs与lhs顺序颠倒即可。
public class order implements Comparator<Model> {
@Override
public int compare(Model lhs, Model rhs) {
// TODO Auto-generated method stub
return rhs.getAge() - lhs.getAge();
}
}
第二、做一个测试类,测试一下比较的结果。
注意下面Collections.sort(mm, new order())方法,括号里面参数1为要排序的实体集合,第二个参数为上面
写比较方法的类。
public class MainActivity extends Activity {
public List<Model> mm = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mm = new ArrayList<Model>();
for (int i = 0; i < 3; i++) {
Model model = new Model();
model.setAge(11 + i);
model.setId(22);
model.setName("asdf");
mm.add(model);
}
Collections.sort(mm, new order());
for (int i = 0; i < mm.size(); i++) {
int age = mm.get(i).getAge();
System.out.println("------------->" + age);
}
}
}
输出结果
以下是实体类
public class Model {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}