案例分析-Stream List 中取出值最大的前 5 个和最小的 5 个值

embedded/2024/9/24 11:13:32/

List<Aaa> 中取出 value 最大的前 5 个和最小的 5 个值

要从 List<Aaa> 中取出 value 最大的前 5 个和最小的 5 个值,我们可以使用 Java 8 的流(Stream)API 来实现。

代码示例:

import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;class Aaa {private BigDecimal value;public Aaa(BigDecimal value) {this.value = value;}public BigDecimal getValue() {return value;}@Overridepublic String toString() {return "Aaa{" + "value=" + value + '}';}
}public class Main {public static void main(String[] args) {// 创建一个测试列表List<Aaa> list = Arrays.asList(new Aaa(new BigDecimal("10")),new Aaa(new BigDecimal("20")),new Aaa(new BigDecimal("5")),new Aaa(new BigDecimal("15")),new Aaa(new BigDecimal("25")),new Aaa(new BigDecimal("2")),new Aaa(new BigDecimal("30")),new Aaa(new BigDecimal("12")),new Aaa(new BigDecimal("50")),new Aaa(new BigDecimal("3")));// 取出前5个最大的List<Aaa> top5Max = list.stream().sorted(Comparator.comparing(Aaa::getValue).reversed()) // 按 value 降序排列.limit(5) // 取前 5 个.collect(Collectors.toList());// 取出前5个最小的List<Aaa> top5Min = list.stream().sorted(Comparator.comparing(Aaa::getValue)) // 按 value 升序排列.limit(5) // 取前 5 个.collect(Collectors.toList());// 打印结果System.out.println("最大前5个: " + top5Max);System.out.println("最小前5个: " + top5Min);}
}

代码解释:

  1. 排序并取前5个最大值

    • 使用 stream() 创建流。
    • 使用 Comparator.comparing(Aaa::getValue).reversed()value 值按降序排序。
    • 使用 limit(5) 限制结果为前 5 个。
    • 使用 collect(Collectors.toList()) 将结果转换为列表。
  2. 排序并取前5个最小值

    • 使用 Comparator.comparing(Aaa::getValue) 按升序排列。
    • limit(5) 限制结果为前 5 个。

输出示例:

最大前5个: [Aaa{value=50}, Aaa{value=30}, Aaa{value=25}, Aaa{value=20}, Aaa{value=15}]
最小前5个: [Aaa{value=2}, Aaa{value=3}, Aaa{value=5}, Aaa{value=10}, Aaa{value=12}]

这段代码可以根据 Aaa 对象的 value 属性,提取出最大和最小的前 5 个值。


http://www.ppmy.cn/embedded/116063.html

相关文章

桶排序和计数排序(非比较排序算法)

桶排序 桶排序是一种基于分配的排序算法&#xff0c;特别适合用来排序均匀分布的数据。它的基本思想是将输入的数据分到有限数量的桶里&#xff0c;然后对每个桶内的数据分别进行排序&#xff0c;最后再将各个桶内的数据合并得到最终的排序结果。(通常用于浮点数&#xff0c;因…

基于vue框架的宠物托管系统设计与实现is203(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,宠物种类,商家,咨询商家,用户宠物,宠物托管,宠物状况,宠物用品,用品分类,商家公告,结束托管,账单信息,延长托管 开题报告内容 基于Vue框架的宠物托管系统设计与实现开题报告 一、引言 随着现代生活节奏的加快&#xff0c;越来越…

3. 什么是连接池?为什么使用数据库连接池?

连接池&#xff08;Connection Pool&#xff09; 是一种数据库连接管理技术&#xff0c;用于在应用程序和数据库之间管理数据库连接。连接池通过预先创建和维护一定数量的数据库连接&#xff0c;将这些连接放入一个“池”中&#xff0c;供应用程序重复使用。这种方法避免了频繁…

uniapp map设置高度为100%后,会拉伸父容器的高度

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…

数模方法论-无约束问题求解

一、基本概念 无约束问题在数学建模中是指优化过程中没有任何限制条件的情况。这种问题旨在寻找一个决策变量集合&#xff0c;使得某个目标函数&#xff08;如成本、效益或其他需要优化的量&#xff09;达到最大或最小值。具体来说&#xff0c;无约束问题通常可以表示为&#x…

Centos 7 搭建Samba

笔记&#xff1a; 环境&#xff1a;VMware Centos 7&#xff08;网络请选择桥接模式&#xff0c;不要用NAT&#xff09; 遇到一个问题就是yum 安装404&#xff0c;解决办法在下面&#xff08;没有遇到可以无视这句话&#xff09; # 安装Samba软件 yum -y install samba# 创建…

深度学习:(五)初识神经网络

&#xff08;一&#xff09;神经网络的层数 除去输入层&#xff0c;但包括输出层&#xff0c;每一层都有自己的参数。 输入层称为第零层。 &#xff08;二&#xff09;最简单的神经网络&#xff08;逻辑回归&#xff09; 下图中的小圆圈&#xff0c;代表了一种运算。且一个小…

如何从格式化的笔记本电脑或台式机中恢复照片

您想学习如何从已格式化的笔记本电脑或台式机中恢复已删除的照片吗&#xff1f;这篇文章解释了如何使用最佳格式的照片恢复软件来做到这一点。您可以通过简单的步骤格式化计算机后恢复已删除的图像。 将照片保存在笔记本电脑或 PC 硬盘上是很常见的。与相机存储卡和 USB 闪存驱…