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

使用Streams移除指定元素:两个Java方法的功能异常排查

修复两个Java Stream方法的问题

一、修复printFolgenOhne3方法

原代码问题

  • 仅将传入的anz单个元素加入列表,未生成从4开始的连续数字序列
  • 过滤逻辑完全错误:用anz % 3 == 0判断(而非当前元素i % 3 == 0),且逻辑颠倒——我们需要保留非3的倍数,而非过滤掉非倍数

修正后的代码

static void printFolgenOhne3(int anz) {
    // 生成从4到anz的连续整数流,过滤掉3的倍数后输出
    IntStream.rangeClosed(4, anz)
            .filter(i -> i % 3 != 0)
            .forEach(System.out::println);
}

补充:生成无限序列(按需停止)

如果需要生成从4开始的无限序列(而非到anz截止),可以用以下实现:

static void printFolgenOhne3() {
    IntStream.iterate(4, i -> i + 1)
            .filter(i -> i % 3 != 0)
            .forEach(System.out::println);
}

二、修复deleteBlanks方法

原代码问题

  • 将整个字符串放入列表后,filter(x -> !x.isBlank())仅过滤空字符串,完全未处理字符串内部的空格
  • 最终输出列表对象,而非处理后的目标字符串

修正后的代码

方法1:字符串直接替换(最简洁)

static void deleteBlanks(String s1) {
    // 替换所有空白字符(含空格、制表符等),仅替换空格用replace(" ", "")
    String result = s1.replaceAll("\\s", "");
    System.out.println(result);
}

方法2:用Stream处理字符(符合Stream使用需求)

static void deleteBlanks(String s1) {
    String result = s1.chars()
            .filter(c -> !Character.isWhitespace(c)) // 过滤空格字符
            .mapToObj(c -> String.valueOf((char) c))
            .collect(Collectors.joining());
    System.out.println(result);
}

内容的提问来源于stack exchange,提问作者haruka kudo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 20:05:23