是否可以创建静态(因此我不必在每次比较时重新创建对象),但仍会传递用于比较的动态值?Comparator在下面的示例中,我想在比较期间传递一个参数。但是如何做到呢?String dynavalprivate final Comparator<Person> COMPARATOR = Comparator.comparing(person -> { if (person.getFirstname() != null) return person.getFirstname(); return evaluateWithDynamicProperty(person, dynaval);}Collections.sort(persons, COMPARATOR); //TODO how to pass dynamic String?
1 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
制作一个方法:
private final Comparator<Person> personComparator(String dynaValue) {
return Comparator.comparing(person -> {
if (person.getFirstname() != null) return person.getFirstname();
return evaluateWithDynamicProperty(person, dynaval);
}
调用类似如下:
Collections.sort(persons, personComparator(dynaValue));
或者,使用 λ:
String personComparatorFn(Person person, String dynaValue) {
if (person.getFirstname() != null) return person.getFirstname();
return evaluateWithDynamicProperty(person, dynaval);
}
并调用如下:
Collections.sort(persons, Comparator.comparing(p -> personComparatorFn(p, dynaValue));
添加回答
举报
0/150
提交
取消