在同行評審期間,開發人員似乎對實施compareToBuilder解決方案感到震驚,因爲我選擇按3個屬性進行排序。他的印象是,我班的compareTo方法會爲每次比較創建過多的比較器,並且該應用程序會對性能產生巨大影響。他建議我使用BeanComparator & ComparatorUtils來鏈接比較器。CompareToBuilder的這種用法是否被認爲效率低下?
這是我的課:
public class EmployeeComparator implements Comparator<Employee> {
@Override
public int compare(Employee o1, Employee o2) {
return new CompareToBuilder()
.append(o1.getJobTitle(), o2.getJobTitle())
.append(o1.getAge(), o2.getAge())
.append(o1.getSalary(), o2.getSalary()).toComparison();
}
這是我實現:
Collections.sort(outputRecordList, Comparator.nullsLast(new EmployeeComparator()));
不過,我真的不知道這是不是真的。我無法找到任何可能表明這會對使用鏈式比較器造成重大性能影響的內容。我通過Apache文檔挖掘出來,看起來這是該類的一個標準實現(https://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/builder/CompareToBuilder.html)。我唯一擔心的是通過添加「Comparator.nullsLast」,我創建了一個怪物。
我發現這個網站在這裏CompareToBulder實現:
http://www.codejava.net/java-core/collections/sorting-a-list-by-multiple-attributes-example
任何幫助或者解釋爲什麼這是不好的做法或解釋究竟CompareToBuilder做將不勝感激。
我投票結束這個問題作爲題外話,因爲它屬於https://codereview.stackexchange.com – Flown
可以理解。我會在那裏發佈。 – MISMajorDeveloperAnyways