java中的组合比较器
我有两个比较:java中的组合比较器,java,comparator,chaining,Java,Comparator,Chaining,我有两个比较: Comparator<? super MyClass> COMPARATOR_BY_PRIORITY = Comparator.nullsFirst( Comparator.comparing(c -> c.isEmpty() ? null : -c.getPriority()) ); Comparator<? super MyClass> COMPARATOR_BY_PRICE =
Comparator<? super MyClass> COMPARATOR_BY_PRIORITY =
Comparator.nullsFirst(
Comparator.comparing(c -> c.isEmpty() ? null : -c.getPriority())
);
Comparator<? super MyClass> COMPARATOR_BY_PRICE =
Comparator.nullsFirst(
Comparator.comparing(c -> c.isEmpty() ? null : c.getPrice())
);
Comparator正如@tobias_k所指出的,它在没有?超级:
Comparator<MyClass> COMPARATOR_BY_PRIORITY =
Comparator.nullsFirst(
Comparator.comparing(c -> c.isEmpty() ? null : -c.getPriority())
);
Comparator<MyClass> COMPARATOR_BY_PRICE =
Comparator.nullsFirst(
Comparator.comparing(c -> c.isEmpty() ? null : c.getPrice())
);
Comparator<MyClass> COMBINED_COMPARATOR =
COMPARATOR_BY_PRIORITY.thenComparing(COMPARATOR_BY_FARE);
比较器比较器按优先级排序=
Comparator.nullsFirst(
Comparator.comparing(c->c.isEmpty()?null:-c.getPriority())
);
比较器比较器按比较器价格=
Comparator.nullsFirst(
Comparator.comparing(c->c.isEmpty()?null:c.getPrice())
);
比较器组合比较器=
比较器按优先级排序。然后进行比较(比较器按票价排序);
你的解决方案如何,对你没有帮助吗?不,它不可编译,没有thenComparator可以获取比较器我认为你的比较器应该是比较器
。使用比较器
Comparator<MyClass> COMPARATOR_BY_PRIORITY =
Comparator.nullsFirst(
Comparator.comparing(c -> c.isEmpty() ? null : -c.getPriority())
);
Comparator<MyClass> COMPARATOR_BY_PRICE =
Comparator.nullsFirst(
Comparator.comparing(c -> c.isEmpty() ? null : c.getPrice())
);
Comparator<MyClass> COMBINED_COMPARATOR =
COMPARATOR_BY_PRIORITY.thenComparing(COMPARATOR_BY_FARE);