您现在的位置是:首页 > 文章详情

Java8 Stream 真香,赶紧来舔一舔

日期:2020-04-26点击:410

如今Java14已经发布许久了,Java15也在路上跑着了,然鹅不少小伙伴Java8API应该还没用溜吧!今天跟各位小伙伴们聊聊Java Stream API的具体使用方法以及应用场景。

举哥简单的例子,定义一个数组:

String[] users = new String[]{"张三","李四","王二"};

我们来使用之前的方式遍历:

for(int i=0;i<users.length;i++){ System.out.println(users[i]); }

亦或者使用:

for(String u:users){ System.out.println(u); }

使用最新的API实现方式:

Stream<String> stream = Stream.of(users); stream.forEach(user-> System.out.println(user));

然鹅好像并没有多么方便,仅仅少撸了一行代码,下面跟大家分享一个稍微复杂一点的例子。

首先定义一个学生类:

@Data @Builder public class Student { private String name; private Integer age; private Integer sex; private Double score; }

定义基础数据:

List<Student> list = new ArrayList<>(); list.add(new Student("张三",28,1,78.9)); list.add(new Student("李四",20,1,98.0)); list.add(new Student("王二",29,0,100.0)); list.add(new Student("张三",28,1,78.5)); Stream<Student> stream = list.stream();

遍历:

stream.forEach(stu-> System.out.println(stu.getName()));

过滤性别:

stream.filter(stu -> stu.getSex()==1) .forEach(stu -> System.out.println(stu.getName()));

名字去重:

stream.distinct().forEach(stu -> System.out.println(stu.getName()));

年龄排序:

stream.sorted(Comparator.comparingInt(Student::getAge)) .forEach(stu -> System.out.println(stu.getName()));

排序反转:

stream.sorted(Comparator.comparingInt(Student::getAge).reversed()) .forEach(stu -> System.out.println(stu.getName()));

姓名集合:

List<String> userList = stream.map(stu -> stu.getName()) .collect(Collectors.toList());

分数求和:

Optional<Double> totalScore = stream.map(Student::getScore) .reduce((x, y) -> x+y); System.out.println(totalScore.get());

求分数最大值:

Optional<Double> maxScore = stream.map(Student::getScore).reduce(Double::max);

求分数最小值:

Optional<Double> minScore = stream.map(Student::getScore).reduce(Double::min);

取前三名同学:

stream.sorted(Comparator.comparingDouble(Student::getScore).reversed()) .limit(3) .forEach(System.out::println);

扔了前三名同学:

stream.sorted(Comparator.comparingDouble(Student::getScore).reversed()) .skip(3) .forEach(System.out::println);

卧槽太多了,撸主举不过来了,但是基本上常用的就这么几个。函数式编程写出的代码更加简洁且意图明确,使用stream接口让你从此告别for循环,小伙伴们赶紧入坑享受吧!!!

作者: 小柒

出处: https://blog.52itstyle.vip

原文链接:https://yq.aliyun.com/articles/757681
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章