gpt4 book ai didi

java - 连接每个其他数组元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:09 26 4
gpt4 key购买 nike

我正在学习如何使用 Java 8 流。我如何使用流而不是 for 循环执行以下操作:

public static void clump(ArrayList strList)
{
for(int i = 0; i < strList.size() - 1; i++)
{
String newStr = "(" + strList.get(i) + " "
+ strList.get(i + 1) + ")";

strList.set(i, newStr);
strList.remove(i + 1);
}
}

最佳答案

使用介于 0 和列表大小一半之间的 IntStream,并将元素乘以 2:

List<String> joined = 
IntStream.range(0, strList.size() / 2)
.mapToObj(i -> "(" + strList.get(2*i) + " "
+ strList.get(2*i + 1) + ")")
.collect(Collectors.toList());

这会将连接的元素放入一个新列表中。要从原始列表中删除未连接的元素,并在前面加上连接的元素,我们可以使用 subList ,这是列表的可变 View :

List<String> subList = strList.subList(0, strList.size() / 2 * 2);
subList.clear();
subList.addAll(joined);

Ideone Demo


子列表的替代方法是也处理流中的最后一个元素:

List<String> joined = 
IntStream.range(0, (1 + strList.size()) / 2)
.mapToObj(i ->
(2*i + 1) < strList.size()
? "(" + strList.get(2*i) + " " + strList.get(2*i + 1) + ")"
: strList.get(2*i))
.collect(Collectors.toList());

Ideone demo

关于java - 连接每个其他数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42307549/

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