gpt4 book ai didi

lambda - Java 8 从输入构建 IntStream 的最佳方式

转载 作者:行者123 更新时间:2023-12-04 15:43:24 31 4
gpt4 key购买 nike

我有作为输入(标准输入)

0 0 1 2 1

我想以最简单的方式从中创建一个流。

我确实通过一个一个地读取每个整数并将它们存储到一个 ArrayList 中来创建一个流。从那里我只需要使用 .stream().reduce() 来使它工作。

我想要的是一种直接从输入创建流的可能方法

我试图调整这段代码:

ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);
IntStream is2 = IntStream.generate(inputStream::read).limit(inputStream.available());

通过使用 DataInputStream 和 readInt() 方法
DataInputStream dis = new DataInputStream(System.in);
IntStream is2 = IntStream.generate(dis::readInt).limit(5);//later : dis.available() instead of 5

但它不起作用我在 generate 函数上抛出了不兼容的 IOException 类型。

我可以做吗 ?或者是否有另一种方法将输入转换为流

我要应用的减少功能是
reduce( (x , y) -> x ^ y) 

我已经通过这样做很容易地在 ArrayList 上完成了
list.stream().reduce( (x , y) -> x ^ y);

解决方案

我曾尝试将它与扫描仪一起使用来完成这项工作,但没有成功,现在我设法让它发挥作用
Scanner sc = new Scanner(System.in);
int oi = Stream.of(sc.nextLine().split(" "))
.mapToInt(Integer::parseInt)
.reduce( (x , y) -> x ^ y).getAsInt();
System.out.println(oi);

我不明白为什么它一开始不起作用

最佳答案

解决方案

Scanner sc = new Scanner(System.in);
int oi = Stream.of(sc.nextLine().split(" "))
.mapToInt(Integer::parseInt)
.reduce( (x , y) -> x ^ y).getAsInt();
System.out.println(oi);

关于lambda - Java 8 从输入构建 IntStream 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28745333/

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