gpt4 book ai didi

java - 如何使用Intstream和map方法

转载 作者:行者123 更新时间:2023-12-02 02:00:54 29 4
gpt4 key购买 nike

我已经解决了Java书中的问题,还有一些问题。

在下面的代码中,我想通过使用映射中间操作将每个元素加倍来创建一个新流。我想打印一个新的流来获取生成的流中除了小于 50 的数字之外的所有元素的总和。

我该如何解决这个问题?

    package test;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
import java.util.Optional;
import java.util.stream.IntStream;

public class tt {


public static void main(String[] args) {
try {
Stream <String> lines = Files.lines(Paths.get("C:\\Users\\wonheelee\\eclipse-workspace\\test\\stream-data.txt"));


IntStream IS = lines.mapToInt(Integer::valueOf);

IS.forEach(System.out::println);
lines.close();

} catch (IOException e) {
// No action
}
}
}

最佳答案

给你..

int result = lines
.mapToInt(Integer::parseInt)
.map(element -> element * 2) //Double
.filter(element -> element >= 50) //Filter out values less than 50
.sum(); //sum

您可以将 mapToIntmap 组合在一个 mapToInt 本身中

.mapToInt(element -> Integer.parseInt(element) * 2)

另外,请注意 Aomine@ 在评论中提到的,使用 Integer.parseInt 来避免额外的装箱/拆箱。

<小时/>

我不太清楚你所说的“创建一个新流”是什么意思。您可以通过再次调用Files.lines来获取新的Stream。

一旦 Stream 被使用,您就无法重复使用它。

引用:

Is there any way to reuse a Stream?

关于java - 如何使用Intstream和map方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51598852/

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