快捷搜索:  汽车  科技

javarunnable接口的用处(你真的了解java.util.Comparator接口吗)

javarunnable接口的用处(你真的了解java.util.Comparator接口吗)private String name;class Person{import java.util.List;import java.util.ArrayList;import java.util.Comparator;

java.util.Comparator接口

java.util.Comparator接口在Java 8发布时做了重大改变,增加了很多静态方法和默认方法,让我们不用实现Comparator接口就可以得到比较器对象。同时在java.util.List接口中增加了sort(Comparator<? super E> c)方法,使用比较器对象对列表中的元素进行排序。这样,就不需要使用Collections类来对列表进行排序了。

javarunnable接口的用处(你真的了解java.util.Comparator接口吗)(1)

自然顺序比较Comparable对象的比较器

javarunnable接口的用处(你真的了解java.util.Comparator接口吗)(2)

代码示例

javarunnable接口的用处(你真的了解java.util.Comparator接口吗)(3)

javarunnable接口的用处(你真的了解java.util.Comparator接口吗)(4)

最后上示例代码。

import java.util.List;

import java.util.ArrayList;

import java.util.Comparator;

class Person{

private String name;

private int age;

private int salary;

public Person(String name int age int salary){

this.name = name;

this.age = age;

this.salary = salary;

}

public String getName(){

return name;

}

public int getAge(){

return age;

}

public int getSalary(){

return salary;

}

public String toString(){

return String.format("(name-%s | age-%d | salary-%d)" name age salary);

}

}

public class UseComparator{

public static void main(String[] args){

List<Person> list = new ArrayList<Person>();

list.add(new Person("zhangsan" 25 3000));

list.add(new Person("lisi" 30 5000));

list.add(new Person("wangwu" 22 3000));

list.add(new Person("zhaoliu" 26 4000));

// 先以年龄排序(升序),再以薪水排序(升序)

list.sort(

Comparator.comparingInt(Person::getAge)

.thenComparingInt(Person::getSalary));

System.out.println(list);

System.out.println();

// 先以薪水排序(降序),再以年龄排序(升序)

list.sort(

Comparator.comparingInt(Person::getSalary)

.reversed()

.thenComparingInt(Person::getAge));

System.out.println(list);

System.out.println();

// 先以姓名排序(升序),再以年龄排序(升序)

list.sort(

Comparator.comparing(Person::getName)

.thenComparingInt(Person::getAge));

System.out.println(list);

}

}

猜您喜欢: