gpt4 book ai didi

java - 使用参数化流跟踪迭代

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:53:48 26 4
gpt4 key购买 nike

这段代码:

Kid[] kids = Kid.getSimpleArray();
String names = Stream.of(kids)
.filter(Kid::hasToy)
.map(Kid::getSurname)
.collect(Collectors.joining(", "));
out.println(names);

给我这个结果:

Stępień、Inglot、Czubówna、Lepiej、Łagowska

我正在考虑一个解决方案,让它变成这样:

1.Stępień、2.Inglot、3.Czubówna、4.Lepiej、5.Łagowska

P.S 我想不出更好的问题来获得我正在寻找的答案。

最佳答案

请注意,这真的很难看,不是我应该在这里给出的建议,但在这里。

您可以使用一个临时集合作为我们的柜台。优点是我们可以将引用阻塞为 final 但仍向其添加元素。

每次 Kid 通过过滤器时,我们都会向其中添加任何内容,并获取字符串中整数的大小。

final List tmp = new ArrayList();
Kid[] kids = Kid.getSimpleArray();
String names = Stream.of(kids)
.filter(Kid::hasToy)
.peek(x -> tmp.add(1))
.map(x -> tmp.size() + "." + x.getSurname())
.collect(Collectors.joining(", "));
out.println(names);

编辑

这是@Sam 和@Tunaki 提供的另外两个解决方案


@山姆

final AtomicInteger ai = new AtomicInteger();
Kid[] kids = Kid.getSimpleArray();
String names = Stream.of(kids)
.filter(Kid::hasToy)
.map(x -> ai.incrementAndGet() + "." + x.getSurname())
.collect(Collectors.joining(", "));
out.println(names);

@图纳基

Kid[] kids = Kid.getSimpleArray();
Kid[] filteredKids = Arrays.stream(kids).filter(Kid::hasToy).toArray(Kid[]::new);
String names = IntStream.range(0, filteredKids.length)
.mapToObj(i -> i + "." + filteredKids[i].getSurname())
.collect(Collectors.joining(", ");
out.println(names);

关于java - 使用参数化流跟踪迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37503594/

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