java8 构建流的5种方法
2023-12-28 14:47:36
1 由值创建流(Stream.of)
Stream<String> stream = Stream.of("Java 8 ", "Lambdas ", "In ", "Action");
stream.map(String::toUpperCase).forEach(System.out::println);
Stream<String> emptyStream = Stream.empty(); ←─使用empty得到一个空流
2 由数组创建流(Arrays.stream)
int[] numbers = {2, 3, 5, 7, 11, 13};
int sum = Arrays.stream(numbers).sum(); ←─总和是4
3 由文件生成流(Files.lines)
long uniqueWords = 0;
try (Stream<String> lines = Files.lines(Paths.get("data.txt"), Charset.defaultCharset())) { ←─流会自动关闭
uniqueWords = lines.flatMap(line -> Arrays.stream(line.split(" "))) ←─生成单词流
.distinct() ←─删除重复项
.count(); ←─数一数有多少各不相同的单词
} catch (IOException e) {
←─如果打开文件时出现异常则加以处理
}
4 由函数生成流:创建无限流(Stream.iterate、Stream.generate)
Stream.iterate 迭代
# iterate方法生成了一个所有正偶数的流
Stream<Integer> stream = Stream.iterate(0, n -> n + 2).limit(10);
stream.forEach(System.out::println);
# 斐波纳契元组序列
Stream<int[]> stream = Stream.iterate(new int[]{0, 1}, t -> new int[]{t[1], t[0] + t[1]}).limit(20);
stream.forEach(t -> System.out.println("(" + t[0] + "," + t[1] + ")"));
IntStream.generate 生成
# 生成一个流,其中有五个0到1之间的随机双精度数
Stream<Double> stream = Stream.generate(Math::random).limit(5);
stream.forEach(System.out::println);
# 生成一个全是1的无限流
IntStream ones = IntStream.generate(() -> 1);
5 由集合创建流(list.stream())
list.stream()
-----------------------------------------------------------------------------读书笔记摘自 书名:Java 8实战 作者:[英] Raoul-Gabriel Urma [意] Mario Fusco [英] Alan M 读书笔记 第 5 章 使用流 5.7 构建流
文章来源:https://blog.csdn.net/weixin_37646636/article/details/135266701
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!