java工具:《list根据ids数组 过滤list》

举报
刘大猫 发表于 2026/05/29 19:48:22 2026/05/29
【摘要】 java工具:《list根据ids数组 过滤list》

image.png

@[toc]

一、介绍

这段代码演示了使用 Java 8 Stream 流对集合进行过滤操作,筛选出符合指定条件的元素。

首先创建了一个包含 10 个 User 对象的列表,每个对象包含 id 和 name 两个属性。然后定义了一个 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 方法无法正确匹配,从而过滤失败。

二、代码

@Test
public void listFilter() {
    List<User> 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<User> filterList = list.stream().filter(item -> Arrays.asList(arr).contains(item.getId())).collect(Collectors.toList());
    filterList.stream().forEach(System.out::println);
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。