1、Collections.sort()
//升序排列 Collections.sort(list, new Comparator<Student>() { public int compare(Student s1, Student s2) { return s1.getAge().compareTo(s2.getAge()); } });
//降序排列 Collections.sort(list, new Comparator<Student>() { public int compare(Student s1, Student s2) { return s2.getAge().compareTo(s1.getAge()); } });
//多條件-先年齡升序、后分數升序 Collections.sort(list, new Comparator<Student>() { public int compare(Student s1, Student s2) { int i = s1.getAge().compareTo(s2.getAge()); if(i == 0) { i = s1.getScore().compareTo(s2.getScore()); } return i; } });
//如日期集合List<Date> list = new ArrayList<>(); Collections.sort(list, new Comparator<Date>() { public int compare(Date s1, Date s2) { return s1.compareTo(s2); } });
java8可使用
2、list.sort()
//升序排列 list.sort((x,y)->Integer.compare(x.getAge(), y.getAge()));
list.sort((x,y)->x.getAge().compareTo(y.getAge())); //降序排列 list.sort((x,y)->Integer.compare(y.getAge(), x.getAge())); //如日期集合List<Date> list = new ArrayList<>(); list.sort((x,y)->x.compareTo(y));
3、list.stream()
//升序排列 list = list.stream().sorted(Comparator.comparing(Student::getAge)).collect(Collectors.toList()); list = list.stream().sorted(Comparator.comparingInt(Student::getAge)).collect(Collectors.toList()); //使用lambda表達式 list = list.stream().sorted(Comparator.comparing(e -> e.getAge())).collect(Collectors.toList()); //降序排列 list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList()); //多條件-先年齡升序、后分數升序 list = list.stream().sorted(Comparator.comparing(Student::getAge).thenComparing(Comparator.comparing(Student::getScore))).collect(Collectors.toList());