Java集合按照物件的某個屬性進行比較排序
阿新 • • 發佈:2019-02-13
需求: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
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; } } });