簡體   English   中英

如何對具有動態參數的比較器進行排序?

[英]How to sort a Comparator with dynamic parameters?

是否可以創建一個靜態Comparator (因此我不必在每次比較時都重新創建對象),但仍可以傳遞一個動態值進行比較?

在下面的示例中,我想在比較期間傳遞String dynaval參數。 但是如何?

private 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?

制作方法:

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));

或者,使用lambda:

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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM