gpt4 book ai didi

java - 如何在 String 对象上使用 Java 8 forEach 来对值进行编码?

转载 作者:行者123 更新时间:2023-11-30 06:47:32 25 4
gpt4 key购买 nike

我正在尝试使用 Java 8 ForEach 编写以下等价物来对字符串数组进行编码。

public static void encode(String... stringsToEncode) {
for (int i = 0; i < stringsToEncode.length; i++) {
stringsToEncode[i] = URLEncoder.encode(stringsToEncode[i], "UTF-8");
}
}
// stringsToEncode = 10+111569+++8 as expected.

我已经实现了以下内容:

public static void encodeUsingForEach(String... stringsToEncode)
List<String> listOfStrings = Arrays.asList(stringsToEncode);
listOfStrings.forEach(s -> {
try {
s = URLEncoder.encode(s, "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new AssertionError("UTF-8 is unknown");
}
});
}
// listOfStrings = [10 11, 156, 9 8]

我缺少什么才能使 encodeUsingForEach() 的输出等同于 encode() 方法的输出?

最佳答案

您不能使用 forEach() 替换值,因为它只使用 对象而不返回 它们。 lambda 内部的重新分配实际上什么都不做,因为 arguments are passed by value in Java .相反,尝试使用流来映射值并生成新列表:

List<String> listOfStrings = Arrays.stream(stringsToEncode)
.map(s -> {
try {
return URLEncoder.encode(s, "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new AssertionError("UTF-8 is unknown");
}
})
.collect(Collectors.toList());

关于java - 如何在 String 对象上使用 Java 8 forEach 来对值进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45829440/

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