pol*_*nts 14
你需要写一个Comparator<MyObject>
并Collections.sort(List<T>, Comparator<? super T>
用来排序你的List
.
或者,您MyObject
也可以implements Comparable<MyObject>
定义一个比较特定属性的自然顺序,然后使用Collections.sort(List<T>
.
List
关于各种标准的排序:
在Comparator
和Comparable
这样做,这是一个更灵活一点,如果有一个对象,你不妨排序的多个属性的另一个好方法是使用番石榴的订货类及其onResultOf(Function)
选项.这非常适合按属性排序,因为Function可用于检索和返回对象的特定属性.举一个简单的例子,想象一个Person
带有String getFirstName()
和String getLastName()
方法的类.
List<Person> people = ...;
Collections.sort(people, Ordering.natural().onResultOf(
new Function<Person, String>() {
public String apply(Person from) {
return from.getFirstName();
}
}));
Run Code Online (Sandbox Code Playgroud)
以上将按名字对列表进行排序.
为了使它更好读,您可能希望定义可能要用作类中public static final
字段的函数Person
.然后你可以像这样按姓氏排序:
Collections.sort(people, Ordering.natural().onResultOf(Person.GET_LAST_NAME));
Run Code Online (Sandbox Code Playgroud)
作为一个有趣的注释,在Java 8中使用lambda表达式和方法引用将会更容易.你将能够编写这样的东西,而不必定义任何笨拙的匿名内部类或静态最终字段:
import static java.util.Comparator.comparing;
...
people.sort(comparing(Person::getLastName));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16988 次 |
最近记录: |