java comparator性能_java遗珠之变强了的Comparator

一个更为强大的Comparator,可以说再也不用写侵入式的Comparable接口,而且连Comparator的

我先来看需要排序的类:

public class Person {

public enum Sex {

MALE, FEMALE

}

private String name;

private LocalDate birthday;

private Sex gender;

private String e

编写一个

public class ComparotorTest {

private static List roster;

@BeforeClass

public static void setup() {

roster = Person.createRoster();

for (Person p : roster) {

p.printPerson();

}

}

}

对Person的单个字段进行排序

@Test

public void testWithComparing() {

System.out.println("Comparator.comparing");

roster.sort(Comparator.comparing(Person::getBirthday));

roster.

对Person的

@Test

public void testWithComparing() {

System.out.println("Comparator.comparing");

roster.sort(Comparator.comparing(Person::getBirthday).thenComparing(Person::getName));

roster.stream().forEach(person -> person.printPerson());

}

对其中的某个字段倒序

@Test

public void testWithComparing() {

System.out.println("Comparator.comparing");

roster.sort(Comparator.comparing(Person::getBirthday).reversed().thenComparing(Person::getName));

roster.stream().forEach(person -> person.printPerson());

}

让其中的一个字段为空的时候放在前面或者后面

@Test

public void testWithComparing() {

System.out.println("Comparator.comparing");

roster.sort(Comparator.comparing(Person::getBirthday,Comparator.nullsLast(Comparator.reverseOrder())).thenComparing(Person::getName));

roster.stream().forEach(person -> person.printPerson());

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值