需求:list里面的元素按照某一属性排序(以下demo都是升序)
待排序list:
List<User> ulist = new ArrayList<User>(); ulist.add(new User("jiazhipeng",23)); ulist.add(new User("ahui",24)); ulist.add(new User("yinxiao",25));
实现:
方法一:
描述:排序对象类实现comparable接口的compareTo方法,然后把对象放入list,然后调用Collections.sort(list);
egg:
public class User implements Comparable<User> { private String name; private Integer age; /** * getters && setters */ @Override public int compareTo(User o) { if(o != null){ if(this.getAge() > o.getAge()){ return 1; }else if(this.getAge() == o.getAge()){ return 0; } } return -1; } }
test:
Collections.sort(ulist); for(User user : ulist){ System.out.println("姓名:" + user.getName() + ";年龄:" + user.getAge()); }
方法二:
描述:不对要排序对象类做任何改动,创建Comparator接口的实现类C,然后 把对象放入list,然后调用Collections.sort(list, C);
egg:
vo类:
public class User { private String name; private Integer age; /** * getters && setters */ }
比较器:
public class ComparatorImpl implements Comparator<User>{ @Override public int compare(User o1, User o2) { if(null != o1 && null != o2){ if(o1.getAge() > o2.getAge()){ return 1; }else if(o1.getAge() == o2.getAge()){ return 0; } } return -1; } }
test:
Collections.sort(ulist, new ComparatorImpl()); for(User user : ulist){ System.out.println("姓名:" + user.getName() + ";年龄:" + user.getAge()); }
匿名类写法test:
Collections.sort(ulist, new Comparator<User>() { @Override public int compare(User o1, User o2) { Integer age1 = o1.getAge(); Integer age2 = o2.getAge(); if (age1 > age2) { return 1; } else if (age1 == age2) { return 0; } else { return -1; } } });
Java集合按照对象的某个属性进行比较排序
最新推荐文章于 2022-09-30 11:29:25 发布