You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java 8 Stream API筛选包含数字1的整数列表元素

问题描述

给定列表定义:

List<Integer> myList = Arrays.asList(10,15,8,49,25,98,98,32,15,212,401,8,001);

期望输出:10,15,15,212,401,001
需求:使用Java 8 Stream API筛选出列表中包含数字1的所有整数。

原回答代码存在逻辑错误:

List<Integer> result =  myList.stream().filter(e -> e == 1).collect(Collectors.toList());
System.out.println(result);

这段代码仅筛选值等于1的元素,无法满足“包含数字1”的需求——像10、15这类数字本身不等于1,但内部包含数字1,会被错误过滤。

正确实现方案

要判断整数是否包含数字1,我们可以将整数转换为字符串,然后检查字符串中是否包含字符'1'。具体代码如下:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Integer> myList = Arrays.asList(10,15,8,49,25,98,98,32,15,212,401,8,001);
        
        List<Integer> result = myList.stream()
                // 将整数转为字符串,检查是否包含字符'1'
                .filter(num -> String.valueOf(num).contains("1"))
                .collect(Collectors.toList());
        
        // 按期望格式输出结果
        System.out.println(String.join(",", result.stream().map(String::valueOf).toArray(String[]::new)));
    }
}

代码说明

  • String.valueOf(num).contains("1"):将每个整数转换为字符串,通过contains方法判断是否包含字符'1',这能准确筛选出所有包含数字1的整数。
  • String.join(",", ...):将结果列表中的元素按逗号分隔拼接成字符串,匹配期望的输出格式。

内容的提问来源于stack exchange,提问作者ganeshan P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 07:32:20