gpt4 book ai didi

java - 如何通过在数字前添加一个字母来简化接收整数列表并返回字符串的 lambda 方法?

转载 作者:行者123 更新时间:2023-12-03 23:59:23 24 4
gpt4 key购买 nike

我想简化这个方法,这样我就不需要 ArrayList,也就是说,只有使用 lambdas 我才能流式传输整数列表,分析谁是偶数或奇数,添加他们的对应的字母并连接成一个字符串

public static String o1e3method(List<Integer> list) {
List<String> n = new ArrayList<>();
list.forEach(x -> {
if (x % 2 == 0) {
n.add("e" + x);
}
else {
n.add("o" + x);
}
});
return String.join(", ", n);
}

换句话说,我想要这样的东西:

public static String o1e3b(List<Integer> list) {
return list.stream()
.map(Object::toString)
.forEach(x -> {
if (Integer.parseInt(x) % 2 == 0) {
x = "e" + x;
}
else {
x = "o" + x;
}
})
.collect(Collectors.joining(", "));
}

但我不能这样做,因为 forEach 是一个 void 方法并且不返回要收集的内容。

最佳答案

forEach 是一个终端 操作,它不返回Stream。您需要一个中间操作来转换您的数字并返回转换后的流,您稍后将收集这些流。

请注意,您有一个到 String 的冗余映射,您根本不需要。

我会推荐:

public static String o1e3b(List<Integer> list) {
return list.stream()
.map(x -> x % 2 == 0 ? "e" + x : "o" + x)
.collect(Collectors.joining(", "));
}

万一你不熟悉,看看什么是Ternary Operator ,我将其用作映射器函数的主体。

关于java - 如何通过在数字前添加一个字母来简化接收整数列表并返回字符串的 lambda 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64047008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com