对集合的属性信息排序

来源:互联网 发布:校园网络需求规格说明 编辑:程序博客网 时间:2024/05/28 06:04

主要思路:
首先,新建类实现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;      }  } 
0 0
原创粉丝点击