List排序
Collections.sort(List):要求集合中的元素实现Comparable接口
Collections.sort(List,Comparator):Comparator比较器,实现排序逻辑,集合中的元素不需要实现
comparable接口 List.sort(Comparator):直接对List调用sort方法排序,只能传入Comparator(来自JDK 8)
Collections.sort(List)
package com.listAndSet;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class List_sort0 {
public static void main(String[] args) {
// List<String> list = Arrays.asList("abc","sas","awq","lki","erq");
// Collections.sort(list);
// for (String s:list){
// System.out.println(s);
// }
List<Student> list = Arrays.asList(
new Student("Tom",30),
new Student("Job",29),
new Student("Jerry",50),
new Student("Steve",10)
);
Collections.sort(list);
for (Student s: list){
System.out.println(s);
}
}
}
class Student implements Comparable<Student>{//实现Comparable接口,定义排序方法
String name;
int age;
public Student(String name,int age){
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Student o) {
return this.age-o.age;
}
}
Collections.sort(List,Comparator)
package com.listAndSet;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class List_sort1 {
public static void main(String[] args) {
List<Student1> list = Arrays.asList(
new Student1("Tom",30),
new Student1("Job",29),
new Student1("Jerry",50),
new Student1("Steve",10)
);
Comparator<Student1> c1 = new Comparator<Student1>(){
//if o1<o2 -1
//if o1==o2 0
//if o1>o2 1
public int compare(Student1 o1, Student1 o2) {//按年龄排序
return o1.age - o2.age;
}
};
Comparator<Student1> c2 = new Comparator<Student1>() {
//if o1<o2 -1
//if o1==o2 0
//if o1>o2 1
public int compare(Student1 o1, Student1 o2) {//按名称排序
return o1.name.compareTo(o2.name);
}
};
// Collections.sort(list,c1);//按年龄排序
Collections.sort(list,c2);//按名称排序
for(Student1 s : list){
System.out.println(s);
}
}
}
class Student1{
String name;
int age;
public Student1(String name,int age){
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "Student1{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
List.sort(Comparator)
package com.listAndSet;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class List_sort {
public static void main(String[] args) {
List<String> list = Arrays.asList("一","七","三","九","五","六");
Comparator<String> c1 = Comparator.naturalOrder();//自然规则
Comparator<String> c2 = c1.reversed();//反转
Comparator<String> c3 = new Comparator<String>() {//自己定义排序规则
List<String> list = Arrays.asList("一","二","三","四","五","六","七","八","九");//判断下标方式来排序
public int compare(String o1, String o2) {
int a=list.indexOf(o1);
int b=list.indexOf(o2);
return a-b;
}
};
Comparator<String> c4 = c3.reversed();
//list.sort(c1);
//list.sort(c2);
list.sort(c3);
//list.sort(c4);
for(String s:list){
System.out.println(s);
}
}
}