只要有热情,哪里都是舞台

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 } 

 

posted @ 2016-10-20 13:53  -sky  阅读(5000)  评论(0编辑  收藏  举报