gpt4 book ai didi

java - 创建空流并向其中添加元素

转载 作者:行者123 更新时间:2023-12-01 06:37:21 26 4
gpt4 key购买 nike

我想要一个流,可以在创建后放置元素:

Stream<Task> all2 = Stream.of();

因为该方法的返回类型也是 Stream,我想通过使用列表来避免额外的成本以及 return list.stream() 的需要:

Stream<Task> getAll(){
Stream<Task> all2 = Stream.of();

all2.add(item1);
..

return all2
}

但是如何将元素添加到 all2 中以进行进一步处理?

这是执行此操作的唯一方法吗:

Stream<Task> all2 = Stream.of();
all2 = Stream.concat(all2, Stream.of(new Task("hello")));
...
all2 = Stream.concat(all2, Stream.of(new Task("hello_1000000")));

这真的比使用列表并向其中添加元素便宜吗?

List<Task> all = new ArrayList<>();
all.add(new Task("hello");
...
all.add(new Task("hello_1000000");
return all.stream();

最佳答案

阅读评论,您可能需要 Stream无限生成的元素。 Stream::generate这样做:

import java.util.Scanner;
import java.util.function.Predicate;
import java.util.stream.Stream;

public class Main {
public static void main(String[] args) {

getStream()
.forEach(System.out::println);

}

static String getUserInput(Scanner scanner) {
return scanner.nextLine();
}

static Stream<String> getStream() {
Scanner sc = new Scanner(System.in);

return Stream.generate(() -> getUserInput(sc)).takeWhile(Predicate.not(String::isEmpty));
}
}

通过这种方法,您将获得 Stream<String> ,它将等待用户输入元素(无限地,或直到第一个错误或 empty() 字符串)并将流操作应用于每个元素(在本例中为 forEach - 如 main() 所示)。

关于java - 创建空流并向其中添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57649370/

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