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

如何在Java Stream中使用if判断实现奇偶数字符串转换?

解决方法:在Stream的map操作中加入条件判断

嘿,你原来的代码问题出在用了filter过滤掉了其中一种数字,导致只能处理偶数或者奇数。其实完全不需要过滤,直接在map里对每个数字做奇偶判断,决定前缀就好啦!

最简实现(三元运算符)

用Java的三元运算符可以一行搞定判断,这是最简洁的写法:

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

public class NumberToStringConverter {
    public static String getString(List<Integer> list){ 
        return list.stream()
                   // 对每个数字判断奇偶,生成带对应前缀的字符串
                   .map(num -> num % 2 == 0 ? "e" + num : "u" + num)
                   // 用逗号连接所有处理后的元素
                   .collect(Collectors.joining(",")); 
    }

    // 测试示例
    public static void main(String[] args) {
        System.out.println(getString(List.of(1,2,4,3))); // 输出:u1,e2,e4,u3
    }
}

复杂逻辑的扩展写法(if-else块)

如果之后需要更复杂的判断逻辑(比如区分0、正数、负数之类的),可以在Lambda里用完整的if-else块,可读性更强:

.map(num -> {
    if (num % 2 == 0) {
        return "e" + num;
    } else {
        return "u" + num;
    }
})

为什么原来的代码不行?

你原来的代码里用了filter(i->Integer.parseInt(i)%2==0),这会把所有奇数都过滤掉,所以最终结果里只会有带前缀的偶数(顺便提一句,你示例里要的是"e"前缀,原来代码里写的是"g",我已经帮你修正啦)。我们需要保留所有元素,只是对每个元素做不同的转换,所以直接在map里处理就够了,完全不需要过滤步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:53:20