文章目录
一、基本使用方法
Collections.sort方法可以用来对自定义对象进行排序。要实现这一点,需要在调用该方法时传入一个比较器,该比较器用于指定如何比较对象中的值。
举个例子,假设有一个自定义对象Person,其中包含姓名和年龄两个属性,我们可以使用以下代码对该对象列表进行按年龄排序:
List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 32));
Collections.sort(people, (p1, p2) -> p1.getAge() - p2.getAge());
这样就可以按照person对象的age属性进行排序,也可以按照其他属性排序
请注意,如果需要按照降序排序,可以将比较器更改为:
Collections.sort(people, (p1, p2) -> p2.getAge() - p1.getAge());
这样就可以按照降序排序了
二、利用compare来实现
Collections.sort() 可以通过传入一个Comparator来排序,这个Comparator里面有一个compare方法。这个方法需要实现比较两个对象的逻辑,并返回一个整数值。
这个方法的签名如下:
int compare(T o1, T o2)
如果返回值是0,则认为这两个对象相等;如果返回值是大于0的整数,则认为第一个对象大于第二个对象;如果返回值是小于0的整数,则认为第一个对象小于第二个对象。
举个例子,假设有一个自定义对象Person,其中包含姓名和年龄两个属性,我们可以使用以下代码对该对象列表进行按年龄排序:
List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 32));
Collections.sort(people, new Comparator<Person>() {
@Override
public int compare(Person p1, Person p2) {
return p1.getAge() - p2.getAge();
}
});
或者使用lambda表达式
List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 32));
Collections.sort(people, (p1, p2) -> p1.getAge() - p2.getAge());
这样就可以按照person对象的age属性进行排序了。
请注意,如果需要按照降序排序,可以在compare方法中返回p2.getAge() - p1.getAge()。
提示:更多内容可以访问Clang’s Blog:https://www.clang.asia