gpt4 book ai didi

java - 如何使用 java 流仅替换 List 的第一个元素而不对列表的其余部分进行任何更改?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:19:16 28 4
gpt4 key购买 nike

我得到一个列表,我想用“$”符号替换此列表中的第一个值,以便我可以在其他地方使用它。但我不希望列表中的其余字符放错位置或更改。可以将结果作为新列表获取。

我已经尝试过只使用 list.add(index, value) 函数,但它改变了列表的顺序。但我不想对列表的其余部分进行任何更改。

是否有学习 java 流的好的教程。我觉得掌握起来很困惑。提前致谢。

如果输入列表是 ('H','E','L','L','O') 输出应该完全像 ('$','E','L','L ','O').

最佳答案

您可以使用索引访问列表。如果索引为零,则将其map$,否则将其发送到流处理管道的下一步。最后收集到一个List中。如果您使用的是 Java8,这种方法比修改源容器要好。这是它的样子。

List<Character> updatedList = IntStream.range(0, chars.size())
.mapToObj(i -> i == 0 ? '$' : chars.get(i))
.collect(Collectors.toList());

这个问题不适合使用 Java8 流来很好地解决。这里的一个缺点是它以线性时间运行,看起来我们使用 java8 对它进行了过度设计。相反,如果你直接修改你的数组或列表 chars[0] = '$';,那么你只能在常数时间内完成。此外,命令式方法更紧凑、可读性更强,并且显然视觉上的困惑更少。我刚刚发布了 Java8 的实现方式,因为您已经明确要求这样做。但在我看来,对于这个特定实例,命令式方法要好得多。使用数组并设置第 0 索引,或者如果出于某种原因需要继续使用 List,请考虑使用 List.set相反,如上面的评论所述。

关于java - 如何使用 java 流仅替换 List<Character> 的第一个元素而不对列表的其余部分进行任何更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57901685/

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