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()); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。