游乐游手机版
首页/AI教程/文章详情

Java工具:List根据ID数组过滤列表

时间:2026-06-01 19:41
使用Java8Stream流配合filter和Arrays asList过滤List时,需传入Integer包装类数组,因基本类型int数组会被视为单个元素,导致过滤失效。

一、Java 8 Stream Filter 集合筛选介绍

在日常 Java 开发中,我们经常需要从集合中筛选出满足特定条件的元素。借助 Java 8 的 Stream 流提供的 filter 方法,配合 Arrays.asListcontains,可以极为简洁地完成这一任务。然而,有一个细节极易被忽视——数组类型必须使用包装类 Integer,如果错误地使用基本类型 int,过滤结果将完全失效,无法筛选出任何目标元素。

具体操作如下:首先创建一个包含 10 个 User 对象的列表,每个对象拥有 idname 两个属性。随后定义一个 Integer 数组 arr,其中存放我们想筛选的 id 值(1、2、5、6、9)。接着通过 stream() 将列表转换为流,调用 filter 方法,过滤条件设置为 Arrays.asList(arr).contains(item.getId()),用于判断当前元素的 id 是否存在于目标数组中。最后使用 collect(Collectors.toList()) 收集过滤结果,并通过 forEach 遍历输出。

关键点在于代码注释中强调的内容:数组声明必须采用 Integer[],而非 int[]。原因在于 Arrays.asList 方法接收的是泛型参数,若传入一个 int[],它会被当作单个整体元素处理,导致 contains 方法无法正确匹配每个 id,过滤逻辑自然失效。

二、完整代码示例

以下是完整的实现代码,逻辑非常清晰:

@Test
public void listFilter() {
    List list = new ArrayList<>();
    list.add(new User(1, "a"));
    list.add(new User(2, "b"));
    list.add(new User(3, "c"));
    list.add(new User(4, "d"));
    list.add(new User(5, "e"));
    list.add(new User(6, "f"));
    list.add(new User(7, "g"));
    list.add(new User(8, "h"));
    list.add(new User(9, "i"));
    list.add(new User(10, "j"));
    //注意:数组类型必须使用Integer才可以,使用int会判断失败
    Integer[] arr = new Integer[]{ 1,2,5,6,9};
    List filterList = list.stream()
        .filter(item -> Arrays.asList(arr).contains(item.getId()))
        .collect(Collectors.toList());
    filterList.stream().forEach(System.out::println);
}

image.png

image.png
image.png
image.png
image.png

来源:https://developer.aliyun.com/article/1738525
上一篇公文写作规范高效掌握,提升企业内部沟通效率 下一篇提升公文写作能力与工作沟通效果的五个技巧
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
AI大模型对最新机器学习进展的评分如何
AI教程 · 2026-06-01

AI大模型对最新机器学习进展的评分如何

如何有效评估大语言模型的真实能力?近期,一款名为“The latest in Machine Learning”的工具引起广泛关注——该工具专注于大模型在MMLU(多任务语言理解基准)上的评分表现,目前已成为该领域极具权威性的参考指标之一。此工具依托于Papers With Code平台,该平台不仅

WowTo AI用AI轻松创建多语言支持与培训视频,提升客户体验与员工培训效率
AI教程 · 2026-06-01

WowTo AI用AI轻松创建多语言支持与培训视频,提升客户体验与员工培训效率

WowTo AI 产品介绍坦率地说,如今制作客户支持与员工培训视频,早已不再必须依赖专业团队。借助 WowTo 这类人工智能工具,整个流程变得极为直观——即便你毫无剪辑经验,也能生成包含多语言版本、带真人数字人形象的教程视频。它究竟能实现哪些功能?来看几个关键亮点:多语言自动生成:一次制作,即可自动

数字游民专属旅行保险推荐方案
AI教程 · 2026-06-01

数字游民专属旅行保险推荐方案

什么是Nomad Insurance数字游民群体正在持续壮大——他们背着笔记本电脑走遍全球,工作地点随心情而定。然而一个现实难题始终存在:传统保险要么按年捆绑销售,要么按国家划分保障范围,根本无法适应这种说走就走的生活方式。为此,专为数字游民和长期旅行者打造的Nomad Insurance应运而生。

OpenNN开源神经网络库机器学习应用解决方案
AI教程 · 2026-06-01

OpenNN开源神经网络库机器学习应用解决方案

OpenNN神经网络库:开源深度学习框架全面解析 在日常工作中谈及开源神经网络框架,有一个名字经常被开发者提及——OpenNN。它专为机器学习场景打造,核心目标非常明确:帮助用户构建更高效、更强大的模型。该库集成了众多前沿算法与实用工具,覆盖领域广泛,包括能源、市场营销、健康等真实业务场景,能够直接

英伟达GET3D AI 3D世界生成工具评测
AI教程 · 2026-06-01

英伟达GET3D AI 3D世界生成工具评测

提到Nvidia GET3D,这无疑是当前最值得深入研究的3D生成工具之一。它成功解决了行业一大核心难题:如何从普通图像直接生成高精度的三维纹理与形状模型。尤为关键的是,其工作流程非常简洁——只需输入一张或一组图像,模型便能快速输出带有完整纹理贴图的三维网格。对于游戏资产制作、虚拟场景搭建乃至产品设