博客
关于我
List集合排序找出其中的最大和最小值
阅读量:794 次
发布时间:2023-02-06

本文共 5625 字,大约阅读时间需要 18 分钟。

Java列表排序方法及找最大值最小值

一、简单的排序方法

使用Collections.sort方法对列表进行排序。这种方法适用于按自然顺序排序的场景,比如对整数列表进行升序排列。

import java.util.ArrayList;import java.util.Collections;import java.util.List;public class ListSort {    public static void main(String[] args) {        List
list = new ArrayList<>(); list.add(5); list.add(13); list.add(4); list.add(9); Collections.sort(list); System.out.println(list.toString()); }}

程序运行结果:[4, 5, 9, 13],按升序排列。


二、复杂数据类型的排序

对于自定义对象,实现Comparable接口并重写compareTo方法来定义排序规则。例如,根据用户的年龄排序。

import java.util.ArrayList;import java.util.Collections;import java.util.List;public class UserMax {    public static void main(String[] args) {        List
list = new ArrayList<>(); list.add(new User("张三", 5)); list.add(new User("李四", 30)); list.add(new User("王五", 19)); list.add(new User("陈十七", 17)); Collections.sort(list); System.out.println(list.toString()); }}class User implements Comparable
{ private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [name=" + name + ", age=" + age + "]"; } @Override public int compareTo(User user) { return this.age - user.getAge(); }}

程序运行结果:按年龄升序排列[User [name=张三, age=5], User [name=陈十七, age=17], User [name=王五, age=19], User [name=李四, age=30]]


三、匿名内部类实现排序

匿名内部类可以在方法范围内覆盖原有的排序规则,提供自定义的Comparator逻辑。

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class UserAnonymous {    public static void main(String[] args) {        List
list = new ArrayList<>(); list.add(new User("张三", 5)); list.add(new User("李四", 30)); list.add(new User("王五", 19)); list.add(new User("陈十七", 17)); Collections.sort(list, new Comparator
() { @Override public int compare(User u1, User u2) { int diff = u1.getAge() - u2.getAge(); if (diff > 0) return 1; if (diff < 0) return -1; return 0; } }); System.out.println(list.toString()); }}

程序运行结果与上一示例相同。


四、找出列表中的最大值和最小值

使用Collections.maxCollections.min方法直接获取最大值和最小值。

import java.util.ArrayList;import java.util.Collections;import java.util.List;public class ListSort {    public static void main(String[] args) {        List
list = new ArrayList<>(); list.add(5); list.add(13); list.add(4); list.add(9); Collections.sort(list); System.out.println("排序后列表:" + list.toString()); Integer max = Collections.max(list); Integer min = Collections.min(list); System.out.println("最大值:" + max); System.out.println("最小值:" + min); }}

程序运行输出:排序后列表:[4, 5, 9, 13]最大值:13最小值:4


五、自定义对象的最大值和最小值

实现Comparable接口后,直接使用Collections.maxCollections.min方法来找最大值和最小值。

import java.util.ArrayList;import java.util.Collections;import java.util.List;public class UserMaxMin {    public static void main(String[] args) {        List
list = new ArrayList<>(); list.add(new User("张三", 5)); list.add(new User("李四", 30)); list.add(new User("王五", 19)); list.add(new User("陈十七", 17)); User max = Collections.max(list); System.out.println("最大值:" + max.toString()); User min = Collections.min(list); System.out.println("最小值:" + min.toString()); }}class User implements Comparable
{ private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User [name=" + name + ", age=" + age + "]"; } @Override public int compareTo(User user) { return this.age - user.getAge(); }}

程序运行输出:最大值:User [name=李四, age=30]最小值:User [name=陈十七, age=17]


六、匿名内部类实现最大值和最小值

使用匿名内部类实现Comparator接口来定义比较逻辑,直接获取最大值和最小值。

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class UserAnonymous {    public static void main(String[] args) {        List
list = new ArrayList<>(); list.add(new User("张三", 5)); list.add(new User("李四", 30)); list.add(new User("王五", 19)); list.add(new User("陈十七", 17)); User max = Collections.max(list, new Comparator
() { @Override public int compare(User u1, User u2) { int diff = u1.getAge() - u2.getAge(); if (diff > 0) return 1; if (diff < 0) return -1; return 0; } }); System.out.println("最大值:" + max.toString()); User min = Collections.min(list, new Comparator
() { @Override public int compare(User u1, User u2) { int diff = u1.getAge() - u2.getAge(); if (diff > 0) return 1; if (diff < 0) return -1; return 0; } }); System.out.println("最小值:" + min.toString()); }}

程序运行输出:最大值:User [name=李四, age=30]最小值:User [name=陈十七, age=17]

转载地址:http://skufk.baihongyu.com/

你可能感兴趣的文章
lnmp mysql 10038_LNMP环境搭建MySQL篇_MySQL
查看>>
LNMP 软件下载安装
查看>>
LNMPA1.6部署记录(Ubuntu)
查看>>
LNMP与LAMP的工作原理
查看>>
LNMP安装与配置
查看>>
LNMP安装了哪些软件?安装目录在哪?
查看>>
LNMP安装成功的界面
查看>>
LNMP架构 nginx默认虚拟主机
查看>>
LNMP架构(Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理)
查看>>
Lnmp架构之PHP
查看>>
LNMP架构部署实战(附LNMP源码包和CRUD测试Web网站)
查看>>
LNMP源码编译安装(附CentOS6、RedHat6、7虚拟机环境)
查看>>
LNMP配置优化
查看>>
Loaddata 未正确处理时间戳和时区
查看>>
loaded the "XXXView" nib but the view outlet was not set 解决方案
查看>>
Loading class 'com.mysql.jdbc.Driver'. This is deprecated
查看>>
LoadRunner 使用介绍
查看>>
loadrunner创建测试脚本运行无响应 不记录脚本
查看>>
LoadRunner压力测试方法
查看>>
Loadrunner和JMeter、Locust三款性能测试工具全面对比
查看>>