java list集合如何使用特定字段进行排序呢?

乔欣 Java经验 发布时间:2022-12-11 16:32:33 阅读数:8547 1
下文笔者讲述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());
        }
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202212/16707476325114.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者