簡體   English   中英

根據沒有比較器的成員變量的順序對對象進行排序

[英]Order objects based on ordering of member variables without comparator

說我有一個對象

Person
  private int age;
  private String name;

我想使用Arrays.sort()類的東西對它們進行自動Arrays.sort() ,以使低齡出現在高齡之前。

常用的方法是使用比較器,但是我那里有許多有用的實用程序功能,是否有更干凈的方法可以做到這一點?

使您的班級實現Comparable

lambdaj的示例解決了您的用例:

List<Person> sortedByAgePersons = sort(persons, on(Person.class).getAge());

將Java 8與Lambda結合使用:

personList.sort((p1, p2) -> Integer.compare(p1.age, p2.age));

要么

Collections.sort(personList, (p1, p2) -> Integer.compare(p1.age, p2.age));

犯了錯誤

您還可以實現接口Comparable並重寫compareTo(...)方法。

這些不能保證其清潔的方法,但是它們只是比較的不同方法。 僅當您要以不遵循自然順序的方式對對象進行排序時,使用Comparator才有用。

暫無
暫無

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

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