1.匿名内部类对象的方式
2.lambda表达式的标准方式
3.lambda表达式的简化方式
步骤:
- 需要实现Comparable接口中的comparaTo(T o)方法,进行比较
一般方式
package com.m.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Person implements Comparable<Person>{
public String name;
public int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
@Override
public int compareTo(Person o) {
return this.age-o.age;
}
}
class demo{
public static void main(String[] args) {
List<Person> list=new ArrayList<>();
// list.add(new Person("a",12));
// list.add(new Person("b",16));
// list.add(new Person("c",13));
//addall()将指定的元素,添加到元素
// static <T> boolean addAll(Collection<? super T> c, T... elements)
// 将所有指定的元素添加到指定的集合。
Collections.addAll(list,
new Person("a",12),
new Person("b",16),
new Person("c",13));
System.out.println(list);//排序前
Collections.sort(list);
System.out.println(list);//排序后
}
}
匿名内部类方式
package com.m.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Person2 {
public String name;
public int age;
public Person2(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
class demo2{
public static void main(String[] args) {
// static <T> void sort(List<T> list, Comparator<? super T> c)
// 根据指定的比较器引起的顺序对指定的列表进行排序。
List<Person2> list=new ArrayList<>();
Collections.addAll(list,
new Person2("a",12),
new Person2("b",16),
new Person2("c",13));
System.out.println(list);
Collections.sort(list,new Comparator<Person2>() {
@Override
public int compare(Person2 o1, Person2 o2) {
return o1.age-o2.age;
}
});
System.out.println(list);
}
}
.lambda表达式的标准方式
package com.m.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Person3 {
public String name;
public int age;
public Person3(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
class demo3{
public static void main(String[] args) {
// static <T> void sort(List<T> list, Comparator<? super T> c)
// 根据指定的比较器引起的顺序对指定的列表进行排序。
List<Person3> list=new ArrayList<>();
Collections.addAll(list,
new Person3("a",12),
new Person3("b",16),
new Person3("c",13));
System.out.println(list);
Collections.sort(list,(Person3 o1, Person3 o2)->{
return o1.age-o2.age;
});
System.out.println(list);
}
}
lambda表达式的简化方式
package com.m.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Person3 {
public String name;
public int age;
public Person3(String name, int age) {
super();
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
class demo3{
public static void main(String[] args) {
// static <T> void sort(List<T> list, Comparator<? super T> c)
// 根据指定的比较器引起的顺序对指定的列表进行排序。
List<Person3> list=new ArrayList<>();
Collections.addAll(list,
new Person3("a",12),
new Person3("b",16),
new Person3("c",13));
System.out.println(list);
Collections.sort(list,(o1,o2)->o1.age-o2.age);
System.out.println(list);
}
}