当前位置: 首页 > news >正文

在Java中实现集合排序

使用字面量的方式创建一个集合

//使用字面量的方式初始化一个List集合List<User> userList = Arrays.asList(new User("小A",5),new User("小鑫",18),new User("小昌",8),new User("小鑫",8));

注意:使用Arrays.asList() api方法创建出来的集合他是一个固定长度的集合,不能进行集合的添加和删除,否则会抛出 UnsupportedOperationException异常,如果你想要添加或者删除集合元素必须使用如下方式创建集合

List<User> studentList = new ArrayList<>(Arrays.asList(new User("杨鑫"), new User("小咪"), new User("科雷"),new User("张宝")));

1、实现Comparable接口,实现集合排序

1.1、实体类实现Comparable接口

package com.maochang.tenancytest.domain;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;@AllArgsConstructor
@NoArgsConstructor
@ToString
@Data
public class User  implements Comparable<User>{private String name;private Integer age;/*** 自定义比较规格* @param o the object to be compared.* @return*/@Overridepublic int compareTo(User o) { //参数对象和当前对象进行比较//进行名称比较int flag = this.name.compareTo(o.name);//代表姓名相同if(flag==0){//A-B 如果 正数 A>B   负数A<Bflag=this.age-o.age;}//返回比较结果return flag;}
}

1.2、使用集合工具类Collections 进行排序

Collections.sort(userList);

1.3、测试方法

  @Testvoid test01() {//使用字面量的方式初始化一个List集合List<User> userList = Arrays.asList(new User("小A",5),new User("小鑫",18),new User("小昌",8),new User("小鑫",8));//集合工具类-排序System.out.println("排序前:" + userList);System.out.println("=================开始排序==================");Collections.sort(userList);System.out.println("排序后:" + userList);}

2、使用Comparator 比较器实现集合对象排序

public class User{private String name;private Integer age;
} Collections.sort(userList,(o1, o2) -> {int flag = o1.getName().compareTo(o2.getName());if(flag == 0){flag = o1.getAge() - o2.getAge();}return flag ;});

简写优化写法

Collections.sort(userList,Comparator.comparing(User::getName).thenComparingInt(User::getAge));

3、使用Stream进行集合对象排序

public class User{private String name;private Integer age;
} //如果实现了Comparable 接口
List<User> collect = userList.stream().sorted().collect(Collectors.toList());//如果没有实现 Comparable 接口
userList.stream().sorted((o1, o2) -> {int flag = o1.getName().compareTo(o2.getName());if(flag == 0){flag = o1.getAge() - o2.getAge();}return flag ;});
//没有实现的简写方式
userList.stream().sorted(Comparator.comparing(User::getName).thenComparingInt(User::getAge));        
http://www.lryc.cn/news/519094.html

相关文章:

  • el-descriptions-item使用span占行不生效
  • Android 绘制学习总结
  • Linux下部署SSM项目
  • 计算机网络 笔记 数据链路层 2
  • xml简介
  • 透明部署、旁路逻辑串联的区别
  • 【网络安全渗透测试零基础入门】之XSS攻击获取用户cookie和用户密码(实战演示)
  • c#版本、.net版本、visual studio版本之间的对应关系
  • 熵与交叉熵:从不确定性角度理解 KL 散度
  • Redis:数据类型
  • 搭建Node.js后端
  • 集合——数据结构
  • 从CentOS到龙蜥:企业级Linux迁移实践记录(系统安装)
  • 《机器学习》——支持向量机(SVM)
  • 【PPTist】公式编辑、插入音视频、添加动画
  • LeetCode - #186 翻转字符串里的单词 II(会员题)
  • Kafka核心参数与使用02
  • Three.js 渲染技术:打造逼真3D体验的幕后功臣
  • QTcpSocket 如何统计在线时长
  • 【Altium】AD使用智能粘贴功能把多个网络标签改成端口
  • .NET 终止或结束进程
  • R.swift库的详细用法
  • Js的回调函数
  • flutter 独立开发之笔记
  • PHP的扩展Imagick的安装
  • 【git】在服务器使用docker设置了一个gogs服务器,访问和现实都不理想
  • 多台PC共用同一套鼠标键盘
  • 大语言模型是如何训练出来的?
  • Vue2与Vue3在项目开发中的选择:深入探讨
  • Web枚举:深入了解目标应用系统