java list集合如何使用特定字段进行排序呢?
下文笔者讲述list集合使用特定字段排序的方法分享,如下所示
实现思路:
定义一个实现Comparator接口的方法
即可实现list集合的自动个对比
例:
新建ComparatorSort类
并实现Comparator接口,重写compare方法
降序排序:
o1的元素>o2的元素,并返回-1
o1的元素小于o2的元素,并返回1
升序排序:
o1的元素>o2的元素,并返回1
o1的元素小于o2的元素,并返回-1
例:
import java.util.Comparator;
import com.java265.entity.UserInfo;
public class ComparatorSort implements Comparator<UserInfo> {
@Override
public int compare(UserInfo o1, UserInfo o2) {
if(o1.getAge().compareTo(o2.getAge())==1){
return -1;
}else if(o1.getAge().compareTo(o2.getAge())==-1){
return 1;
}else{
return 0;
}
}
}
在需要排序的集合上运行collections.sort
Collections.sort(list,new ComparatorSort());
例2: 借助stream对list中的元素进行排序
多条件排序使用:thenComparing 降序排序使用:reversed() List<User> list = new ArrayList<User>(); User user1 = new User(); user1.setAge(66); user1.setScore(120); list.add(user1); User user2 = new User(); user2.setAge(28); user2.setScore(288); list.add(user2); User user3 = new User(); user3.setAge(26); user3.setScore(189); list.add(user3); List<User> listSort = list.stream().sorted(Comparator.comparing(User::getAge).reversed().thenComparing(User::getScore)).collect(Collectors.toList()); for(User u:listSort){ System.out.println(u.getAge()+"|"+u.getScore()); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


