目标:Lambda简化Comparator接口匿名内部类写法
public class CollectionsDemo02 {
public static void main ( String[ ] args) {
List< Student> lists = new ArrayList < > ( ) ;
Student s1 = new Student ( "李铭" , 18 , '男' ) ;
Student s2 = new Student ( "冯龙" , 23 , '男' ) ;
Student s3 = new Student ( "王乐乐" , 21 , '男' ) ;
Collections. addAll ( lists , s1 , s2 , s3) ;
Collections. sort ( lists, new Comparator < Student> ( ) {
@Override
public int compare ( Student o1, Student o2) {
return o1. getAge ( ) - o2. getAge ( ) ;
}
} ) ;
Collections. sort ( lists, ( Student o1, Student o2) - > {
return o1. getAge ( ) - o2. getAge ( ) ;
} ) ;
Collections. sort ( lists, ( Student o1, Student o2) - > o1. getAge ( ) - o2. getAge ( ) ) ;
Collections. sort ( lists, ( o1, o2) - > o1. getAge ( ) - o2. getAge ( ) ) ;
System. out. println ( lists) ;
}
}
public class Student {
private String name ;
private int age ;
private char sex ;
@Override
public boolean equals ( Object o) {
if ( this == o) return true ;
if ( o == null || getClass ( ) != o. getClass ( ) ) return false ;
Student student = ( Student) o;
return age == student. age &&
sex == student. sex &&
Objects. equals ( name, student. name) ;
}
@Override
public int hashCode ( ) {
return Objects. hash ( name, age, sex) ;
}
public Student ( ) {
}
public Student ( String name, int age, char sex) {
this . name = name;
this . age = age;
this . sex = sex;
}
public String getName ( ) {
return name;
}
public void setName ( String name) {
this . name = name;
}
public int getAge ( ) {
return age;
}
public void setAge ( int age) {
this . age = age;
}
public char getSex ( ) {
return sex;
}
public void setSex ( char sex) {
this . sex = sex;
}
@Override
public String toString ( ) {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
'}' ;
}
}