{ //if(isLast()) re-6ren">
gpt4 book ai didi

java 8 流 : Use map to change last element in a List

转载 作者:搜寻专家 更新时间:2023-11-01 04:02:41 25 4
gpt4 key购买 nike

我有以下代码:

List<String> list= Arrays.asList("a","b","c");
list.stream()
.map(x->{
//if(isLast()) return "last";
return x;
})
.forEach(System.out::println);

我想用“last”更改列表中的最后一项,这样程序将返回类似这样的内容

a
b
last

注意:我知道我可以在没有流的情况下很容易地做到这一点,但我很想知道这是否可以通过流来实现。

注意2:我提供了一个简单的例子,所以我可以很容易地理解流的概念

最佳答案

这个怎么样:

<T> Stream<T> replaceLast(List<T> items, T last) {
Stream<T> allExceptLast = items.stream().limit(items.size() - 1);
return Stream.concat(allExceptLast, Stream.of(last));
}

该方法生成两个单独的流,一个包含输入列表中除最后一项以外的所有内容,第二个仅包含替换的最后一项。然后它返回这两个流的串联。

调用示例:

>>> List<String> items = Arrays.asList("one", "two", "three");
>>> replaceLast(items, "last").forEach(System.out::println);
one
two
last

想了想,如果用Stream.limit不舒服,Stream<T> allExceptLast = items.subList(0, items.size() - 1).stream();也是可以的。

关于java 8 流 : Use map to change last element in a List,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38423141/

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