需求: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集合按照對象的某個屬性進行比較排序
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.