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