list集合排序
https:/blog.csdn.net/veryisjava/article/details/51675036
1 public static void main(String[] args) { 2 List<Integer> nums = new ArrayList<Integer>(); 3 nums.add(3); 4 nums.add(5); 5 nums.add(1); 6 nums.add(0); 7 System.out.println(nums); 8 Collections.sort(nums); 9 System.out.println(nums); 10 }
输出结果:
[3, 5, 1, 0]
[0, 1, 3, 5]
1 package core.java.collection.collections; 2 3 public class User implements Comparable<User>{ 4 5 private int score; 6 7 private int age; 8 9 public User(int score, int age){ 10 super(); 11 this.score = score; 12 this.age = age; 13 } 14 15 public int getScore() { 16 return score; 17 } 18 19 public void setScore(int score) { 20 this.score = score; 21 } 22 23 public int getAge() { 24 return age; 25 } 26 27 public void setAge(int age) { 28 this.age = age; 29 } 30 31 @Override 32 public int compareTo(User o) { 33 int i = this.getAge() - o.getAge();//先按照年龄排序 34 if(i == 0){ 35 return this.score - o.getScore();//如果年龄相等了再用分数进行排序 36 } 37 return i; 38 } 39 40 } 41 42 public static void main(String[] args) { 43 List<User> users = new ArrayList<User>(); 44 users.add(new User(78, 26)); 45 users.add(new User(67, 23)); 46 users.add(new User(34, 56)); 47 users.add(new User(55, 23)); 48 Collections.sort(users); 49 for(User user : users){ 50 System.out.println(user.getScore() + "," + user.getAge()); 51 } 52 }
输出结果:
55,23
67,23
78,26
34,56
=======================
Collections提供的第二种排序方法sort(List<T> list, Comparator<? super T> c)
1 package core.java.collection.collections; 2 3 public class Students { 4 5 private int age; 6 private int score; 7 8 public Students(int age, int score){ 9 super(); 10 this.age = age; 11 this.score = score; 12 } 13 14 public int getAge() { 15 return age; 16 } 17 public void setAge(int age) { 18 this.age = age; 19 } 20 public int getScore() { 21 return score; 22 } 23 public void setScore(int score) { 24 this.score = score; 25 } 26 } 27 public static void main(String[] args) { 28 List<Students> students = new ArrayList<Students>(); 29 students.add(new Students(23, 100)); 30 students.add(new Students(27, 98)); 31 students.add(new Students(29, 99)); 32 students.add(new Students(29, 98)); 33 students.add(new Students(22, 89)); 34 Collections.sort(students, new Comparator<Students>() { 35 36 @Override 37 public int compare(Students o1, Students o2) { 38 int i = o1.getScore() - o2.getScore(); 39 if(i == 0){ 40 return o1.getAge() - o2.getAge(); 41 } 42 return i; 43 } 44 }); 45 for(Students stu : students){ 46 System.out.println("score:" + stu.getScore() + ":age" + stu.getAge()); 47 } 48 }
输出结果:
score:89:age22
score:98:age27
score:98:age29
score:99:age29
score:100:age23
从上面的例子我们可以看出Students类没有实现Comparable<T>接口,只是在sort()方法
中多传入一个参数,只不过该参数是一个接口我们需要实现其compare方法。