摘要:用于对流进行排序。三最终操作用于迭代流中的每个元素,并执行相应的操作。类类也是的新特性,用于有效解决问题。与的功能一样,不过接受一个函数式接口来生成对象为空则抛出异常与使用类似与使用类似这是一种级联的方式,能够解决方式的嵌套问题。
Stream API
Stream API是Java8的新特性,通常用于对集合进行一些操作,可以帮助开发者写出更高效、整洁的代码。
一、Stream流的创建1、通过已有的集合来创建流,这种方式使用的比较多
Liststrings = Arrays.asList("hushucheng", "hufanqie", "hututu", "marong", "marongrong"); Stream stream = strings.stream();
2、使用stream来创建
Stream二、中间操作stream = Stream.of("hushucheng", "hufanqie", "hututu", "marong", "marongrong");
1、filter
用法如下:
Liststrings = Arrays.asList("hushucheng","" ,"hufanqie", "hututu", "marong", "marongrong"); strings.stream().filter(string -> !string.isEmpty()).forEach(System.out::println);
在例子中,过滤了空字符串。
2、map
用法如下:
Liststrings = Arrays.asList("hushucheng","hufanqie", "hututu", "marong", "marongrong"); strings.stream().map(string -> string.toUpperCase()).forEach(System.out::println);
在例子中,将单词全部映射为大写
3、limit
用法如下:
Liststrings = Arrays.asList("hushucheng","hufanqie", "hututu", "marong", "marongrong"); strings.stream().map(string -> string.toUpperCase()).limit(4).forEach(System.out::println);
用来限制返回的个数
4、skip
用法类似limit,用来跳过若干个数。
5、sorted
用于对流进行排序。
Liststrings = Arrays.asList(1, 3, 3, 2, 5, 4); strings.stream().sorted().forEach(System.out::println);
6、distinct
用于去重。用法略。
1、forEach
用于迭代流中的每个元素,并执行相应的操作。比如前面的例子中都用到了。
2、collect
将流中的元素累积成一个汇总结果。
Liststrings = Arrays.asList(1, 3, 3, 2, 5, 4); strings = strings.stream().sorted().collect(Collectors.toList());
3、count
统计流中元素个数。
Optional类也是Java8的新特性,用于有效解决NPE问题。
一、Optional对象的创建1、 empty方法创建一个空对象
Optionals1 = Optional.empty();
2、 of方法可以创建一个非空对象
Optionals2 = Optional.of("marong");
3、 ofNullable方法可以创建一个可以为空的对象
Optional二、常用方法s3 = Optional.ofNullable("marongrong");
1、ifPresent和isPresent
(1) 调用ifPresent方法,则对象不为空执行相关操作。
(2) 调用isPresent方法可以判断对象是否为空。
2、orElseorElseThroworElseGet
(1) orElse
System.out.println(s1.orElse("marong").equals("marong")); rue System.out.println(s3.orElse("marong").equals("marongrong")); rue
(2) orElseGet
与orElse的功能一样,不过接受一个函数式接口来生成对象
System.out.println(s1.orElseGet(String::new).equals("")); System.out.println(s3.orElseGet(() -> "marongrong").equals("marongrong"));
(3) orElseThrow
orElseThrow为空则抛出异常
s1.orElseThrow(IllegalStateException::new);
3、filter
与Stream使用类似
4、map
与stream使用类似
5、flatmap
这是一种级联的方式,能够解决map方式的optional嵌套问题。
http://www.hollischuang.com/w...
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/75255.html
摘要:跳过元素流还支持方法,返回一个扔掉了前个元素的流。归约到目前为止,我们见到过的终端操作都是返回一个之类的或对象等。这样的查询可以被归类为归约操作将流归约成一个值。通过反复使用加法,你把一个数字列表归约成了一个数字。 使用流 在上一篇的读书笔记中,我们已经看到了流让你从外部迭代转向内部迭代。这样,你就用不着写下面这样的代码来显式地管理数据集合的迭代(外部迭代)了: /** * 菜单 ...
摘要:第三个问题查找所有来自于剑桥的交易员,并按姓名排序。第六个问题打印生活在剑桥的交易员的所有交易额。第八个问题找到交易额最小的交易。 付诸实战 在本节中,我们会将迄今学到的关于流的知识付诸实践。我们来看一个不同的领域:执行交易的交易员。你的经理让你为八个查询找到答案。 找出2011年发生的所有交易,并按交易额排序(从低到高)。 交易员都在哪些不同的城市工作过? 查找所有来自于剑桥的交易...
摘要:比如,你可以建立一个,选出热量超过卡路里的头三道菜请注意也可以用在无序流上,比如源是一个。跳过元素流还支持方法,返回一个扔掉了前个元素的流。一般来说,应该使用来对这种流加以限制,以避免打印无穷多个值。 一、筛选和切片 1.用谓词筛选 Streams接口支持filter方法。该操作会接受一个谓词(一个返回boolean的函数)作为参数,并返回一个包括所有符合谓词的元素的流。例如筛选出所有...
摘要:新特性总览标签本文主要介绍的新特性,包括表达式方法引用流默认方法组合式异步编程新的时间,等等各个方面。还有对应的和类型的函数连接字符串广义的归约汇总起始值,映射方法,二元结合二元结合。使用并行流时要注意避免共享可变状态。 Java8新特性总览 标签: java [TOC] 本文主要介绍 Java 8 的新特性,包括 Lambda 表达式、方法引用、流(Stream API)、默认方...
阅读 3665·2021-11-23 09:51
阅读 1328·2021-11-10 14:35
阅读 3992·2021-09-22 15:01
阅读 1251·2021-08-19 11:12
阅读 367·2019-08-30 15:53
阅读 1669·2019-08-29 13:04
阅读 3414·2019-08-29 12:52
阅读 3032·2019-08-23 16:14