如何从 Java 流中获取所有最大值?
如何在 Java Stream 中返回多个最大值
在 Java Stream API 中,max 函数通常返回以下值中的最大元素之一提供比较器时的集合。但是,如果我们想要所有最大值,特别是当多个元素具有相同的最大值时,该怎么办?
返回所有最大值的技巧
不幸的是,Java API 不这样做不提供检索所有最大值的直接方法。但是,解决方法是使用收集器存储部分结果。这是一个基于比较器生成收集器的辅助函数:
static <T> Collector<T, ?, List<T>> maxList(Comparator<? super T> comp) { return Collector.of( ArrayList::new, (list, t) -> { int c; if (list.isEmpty() || (c = comp.compare(t, list.get(0))) == 0) { list.add(t); } else if (c > 0) { list.clear(); list.add(t); } }, (list1, list2) -> { if (list1.isEmpty()) { return list2; } if (list2.isEmpty()) { return list1; } int r = comp.compare(list1.get(0), list2.get(0)); if (r < 0) { return list2; } else if (r > 0) { return list1; } else { list1.addAll(list2); return list1; } }); }
此收集器维护一个与比较器等效的元素列表。合并结果时,收集器返回包含较大元素的列表。如果元素相等,则会附加列表。
要在流上使用此收集器,只需按如下方式应用它:
Stream<String> input = ... ; List<String> result = input.collect(maxList(comparing(String::length)));
示例用法
例如,让我们查找 a 中具有最大长度的所有字符串列表。
List<String> strings = Arrays.asList("apple", "banana", "pear", "orange", "grapes", "kiwi"); Stream<String> stringStream = strings.stream(); List<String> maxStrings = stringStream.collect(maxList(Comparator.comparingInt(String::length))); System.out.println(maxStrings); // [apple, banana, grapes, orange]
在此示例中,maxList 收集器将返回一个包含所有具有最大长度的字符串的列表。
以上是如何从 Java 流中获取所有最大值?的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

公司安全软件导致部分应用无法正常运行的排查与解决方法许多公司为了保障内部网络安全,会部署安全软件。...

将姓名转换为数字以实现排序的解决方案在许多应用场景中,用户可能需要在群组中进行排序,尤其是在一个用...

系统对接中的字段映射处理在进行系统对接时,常常会遇到一个棘手的问题:如何将A系统的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架进行数据库操作时,经常需要根据实体类的属性名构造查询条件。如果每次都手动...

在使用IntelliJIDEAUltimate版本启动Spring...

Java对象与数组的转换:深入探讨强制类型转换的风险与正确方法很多Java初学者会遇到将一个对象转换成数组的�...

电商平台SKU和SPU表设计详解本文将探讨电商平台中SKU和SPU的数据库设计问题,特别是如何处理用户自定义销售属...

Redis缓存方案如何实现产品排行榜列表的需求?在开发过程中,我们常常需要处理排行榜的需求,例如展示一个�...
