【java】对ArrayList中的元素进行排序的几种方式

对ArrayList中的元素进行排序的几种方式

一、使用Collections工具类

1、对基本类型排序

通过Collections.sort()对基本类型排序默认是以升序排序

// 1.Collections.sort()默认按照升序排序
List<Integer> integerList = new ArrayList<>();
Collections.addAll(integerList,1,2,6,5,5,4,55,4,5,5,4,5,2,4,6,2,45);
Collections.sort(integerList);
System.out.println(integerList);

2、对字符串类型排序

对字符串类型排序默认按照首字母a-z排序

// 2.对字符串类型排序
List<String> strings = new ArrayList<>();
Collections.addAll(strings,"d","gsf","trh","fsd","an");
Collections.sort(strings);
System.out.println(strings);

3、对对象排序

如何使用Collections对对象排序呢?

在这里插入图片描述

其实只需要让我们的数据类型实现Comparable接口即可,下面定义一个实现Comparable接口的学生类,并且实现compareTo方法,让学生类只比较年龄。

/*** 学生** @author ez4sterben* @date 2023/07/18*/
public class Student implements Comparable<Student> {private String id;private String name;private Integer age;private String sex;@Overridepublic String toString() {return "Student{" +"age=" + age +'}';}public Student(Integer age) {this.age = age;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic int compareTo(Student o) {// 这种是升序return this.getAge() - o.getAge();// 这种是降序// return o.getAge() - this.getAge();}
}

排序方法和正常使用一样,直接把整个list传入即可

// 3.对对象排序List<Student> students = new ArrayList<>();Collections.addAll(students,new Student(18),new Student(26),new Student(20),new Student(16),new Student(12));System.out.println(students);Collections.sort(students);System.out.println(students);

在这里插入图片描述

二、使用stream流

// 2.lambda表达式Stream<Integer> sorted = integerList.stream().sorted();System.out.println(Arrays.toString(sorted.toArray()));

在这里插入图片描述

三、使用排序算法(以冒泡排序为例)

// 3.直接使用排序算法(以冒泡排序为例)for(int i = 0; i < integerList.size() - 1; i++){for(int j = 0; j < integerList.size() - i - 1; j++){if(integerList.get(j) > integerList.get(j + 1)){Integer temp = integerList.get(j);integerList.set(j, integerList.get(j + 1));integerList.set(j + 1, temp);}}}System.out.println(integerList);

在这里插入图片描述

四、测试类整体代码

import java.util.*;
import java.util.stream.Stream;/*** 数组列表排序** @author ez4sterben* @date 2023/07/19*/
public class ArrayListSort {public static void main(String[] args) {List<Integer> integerList = new ArrayList<>();Collections.addAll(integerList,1,2,6,5,5,4,55,4,5,5,4,5,2,4,6,2,45);// 1.Collections.sort()默认按照升序排序Collections.sort(integerList);System.out.println(integerList);// 2.对字符串类型排序List<String> strings = new ArrayList<>();Collections.addAll(strings,"d","gsf","trh","fsd","an");Collections.sort(strings);System.out.println(strings);// 3.对对象排序List<Student> students = new ArrayList<>();Collections.addAll(students,new Student(18),new Student(26),new Student(20),new Student(16),new Student(12));System.out.println(students);Collections.sort(students);System.out.println(students);// 2.lambda表达式Stream<Integer> sorted = integerList.stream().sorted();System.out.println(Arrays.toString(sorted.toArray()));// 3.直接使用排序算法(以冒泡排序为例)for(int i = 0; i < integerList.size() - 1; i++){for(int j = 0; j < integerList.size() - i - 1; j++){if(integerList.get(j) > integerList.get(j + 1)){Integer temp = integerList.get(j);integerList.set(j, integerList.get(j + 1));integerList.set(j + 1, temp);}}}System.out.println(integerList);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/3644.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

访问学者面试申请如何应对?

作为一个学者面试申请者&#xff0c;面对这一重要机会&#xff0c;我们需要认真准备并采取适当的应对策略。下面知识人网小编将提供一些建议&#xff0c;帮助你在面试中取得良好的表现。 首先&#xff0c;在准备阶段&#xff0c;你应该研究并了解申请机构的背景和研究方向。了解…

CentOS7中安装docker并配置阿里云加速器

文章目录 一、docker的安装二、docker的卸载三、配置加速器四、docker-compose安装五、docker-compose卸载六、docker-compose相关命令七、常用shell组合 一、docker的安装 参考&#xff1a;https://docs.docker.com/engine/install/centos 本文内容是基于&#xff1a;CentOS L…

css 3个元素行排列,前2个元素靠左,第三个元素靠右

上效果&#xff1a; 实现方式&#xff1a; display:flex &#xff0c; 行排列&#xff0c;默认靠左对齐&#xff0c; 然后让第三个元素自动占满剩余的空间&#xff1a;flex-grow:1&#xff0c;text-align:end // wxml <!-- 支付方式--><view class"payment_…

Docker 安装 MongoDB开启认证,创建只读用户权限。

创建带认证的mongdb容器 docker run -itd --name mongo -p 27017:27017 mongo --auth --auth 就是开启mongodb权限认证。如果不加 --auth 则是无权限认证&#xff0c;连接成功后任何用户都可以对数据库进行读写操作。 进入容器并创建用户 docker run -itd --name mongo -p 27…

自定义实现list及其功能

#pragma once #include <iostream> #include <assert.h> using namespace std;namespace test {//******************************设置结点******************************template<class T>struct list_node{T _data;list_node<T>* _next;list_node&l…

HDC.Cloud 2023|邂逅AI,华为云CodeArts铸就研发效能10倍提升

2023年7月7日-9日&#xff0c;华为开发者大会2023&#xff08;Cloud&#xff09;在东莞松山湖隆重举行。期间&#xff0c;华为云主办了以“AI‘邂逅’一站式软件开发&#xff0c;CodeArts以10倍效能“绘”企业应用远景”为主题的分论坛。 华为云PaaS服务产品部副部长汪维敏携一…

Zookeeper概述及部署

Zookeeper概述及部署 一、Zookeeper 定义二、Zookeeper 特点三、Zookeeper 数据结构四、Zookeeper 应用场景五、Zookeeper选举机制● 第一次启动选举机制● 非第一次启动选举机制 六、部署 Zookeeper 集群1.安装前准备2.安装 Zookeeper 一、Zookeeper 定义 Zookeeper是一个开源…

Word之解决中文和英文混写导致字间距增大的问题(六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【密码学】一、概述

概述 1、密码学的发展历史1.1 古代密码时代1.2 机械密码时代1.3 信息密码时代1.4 现代密码时代 2、密码学的基本概念3、密码学的基本属性4、密码体制分类4.1 对称密码体制4.2 非对称加密体制 5、密码分析 1、密码学的发展历史 起因&#xff1a;保密通信和身份认证问题 根据时间…

LabVIEW - 采集声音并保存 wav 文件

1. 题目 编写程序&#xff0c;实现用户点击按钮时&#xff0c;采集声音&#xff0c;显示声音波形&#xff0c;对于采集的声音进行低频段、中频段、高频段分别进行适当的比例放大或者衰减&#xff0c;然后重新合成(三段相加即可)&#xff0c;并将合成的声音下入wav格式的文件保存…

PostgreSQL MVCC的弊端优化方案

我们之前的博客文章“我们最讨厌的 PostgreSQL 部分”讨论了大家最喜欢的 DBMS 多版本并发控制 (MVCC) 实现所带来的问题。其中包括版本复制、表膨胀、索引维护和真空管理。本文将探讨针对每个问题优化 PostgreSQL 的方法。 尽管 PostgreSQL 的 MVCC 实现是 Oracle 和 MySQL 等…

关于 PostgreSQL 删除数据库 - 命令行删除,报错数据库不存在,pgadmin 报错存在会话链接 导致无法删除数据库问题

序言 测试环境&#xff1a; Windows 10问题 笔者尝试过在 cmd 命令行&#xff0c;使用PostgreSQL 的 psql 工具登录 postgresql&#xff0c;删除某个有问题的数据库&#xff0c;准备新建重载该数据库时&#xff0c;发现 DROP DATABASE database_name &#xff0c;竟然报错该…

埃科光电在科创板上市:同创伟业、毅达资本为股东,实控人为董宁

7月19日&#xff0c;合肥埃科光电科技股份有限公司&#xff08;下称“埃科光电”&#xff0c;SH:688610&#xff09;在上海证券交易所科创板上市。本次上市&#xff0c;埃科光电的发行价为73.33元/股&#xff0c;发行数量为1700万股&#xff0c;募资总额约为12.47亿元&#xff…

Shell运行原理以及Linux中的权限问题

目录 一、shell的运行原理 二、Linux权限的概念 2.1 用户账号切换 2.2 仅提升当前指令的权限 2.3 将普通用户添加到信任列表 三、Linux权限管理 3.1 文件访问者的分类 3.2 文件类型和访问权限 3.3 字符权限值的表示方法 3.3.1 字符表示方法 3.3.2 八进制表示法 3.4…

XSS 攻击的检测和修复方法

XSS 攻击的检测和修复方法 XSS&#xff08;Cross-Site Scripting&#xff09;攻击是一种最为常见和危险的 Web 攻击&#xff0c;即攻击者通过在 Web 页面中注入恶意代码&#xff0c;使得用户在访问该页面时&#xff0c;恶意代码被执行&#xff0c;从而导致用户信息泄露、账户被…

BUFG/BUFGCE/BUFH/BUFHCE/BUFH/BUFGHCE/BUFMR/BUFMRCE/BUFR/IBUF/IBUFDS

本文对BUFG/BUFGCE/BUFH/BUFHCE简单介绍&#xff0c;便于后续查看。 原语的使用&#xff1a;在vivado中找到所要用的原语&#xff0c;直接将其实例化到设计中即可。 文章目录 BUFGBUFGCEBUFHBUFHCEBUFMRBUFRBUFMRCEIBUFIBUFDS 下图为 7 系列 FPGA 时钟架构图&#xff1a; BU…

Appium+python自动化(十二)- Android UIAutomator终极定位凶器(超详解)

简介 乍眼一看&#xff0c;小伙伴们觉得这部分其实在异性兄弟那里就做过介绍和分享了&#xff0c;其实不然&#xff0c;上次介绍和分享的大哥是uiautomatorviewer&#xff0c;是一款定位工具。今天介绍的是一个java库&#xff0c;提供执行自动化测试的各种API。 Android团队在4…

数据结构(王道)——数据结构之 二叉树

一、数据结构之 二叉树概念&#xff1a; 特殊的二叉树结构&#xff1a; 满二叉树完全二叉树 二叉排序树 平衡二叉树 二叉树基本概念总结&#xff1a; 二、二叉树的常用性质&#xff1a; 1、【二叉树】的叶子结点比二分支结点多一个 2、【m叉树】的第i层至多有m^(i-1)个结点 3、…

关于Qt For android第一次编译时出现的问题

搞了三四天&#xff0c;搞的快崩溃了&#xff0c;问题提示为 FAILURE: Build failed with an exception.* What went wrong: A problem occurred configuring root project android-build. > Could not resolve all artifacts for configuration :classpath.> Could not…

pytorch 2.0初探:和pytorch 1.13的速度对比

看到pytorch2.0出来了&#xff0c;而且宣传提速明显&#xff0c;一行代码即可提速43%左右&#xff1a; compiled_model torch.compile(model) We then measure speedups and validate accuracy across these models. Since speedups can be dependent on data-type, we measu…