源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

详解java8中的Stream数据流

  • 时间:2022-07-02 17:22 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:详解java8中的Stream数据流
Stream是java8引入的一个重度使用lambda表达式的API。Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。直观意味着开发者在写代码时只需关注他们想要的结果是什么而无需关注实现结果的具体方式。这一章节中,我们将介绍为什么我们需要一种新的数据处理API、Collection和Stream的不同之处以及如何将StreamAPI应用到我们的编码中。[b] [/b] [b]筛选重复的元素[/b] Stream 接口支持 distinct 的方法, 它会返回一个元素(根据流所生成元素的 hashCode和equals方法实现)的流。 例如,以下代码会筛选出列表中所有的偶数,并确保没有 重复。
List<Dish> dishes = Dish.menu.stream()
.filter(Dish::isVegetarian)
.collect(Collectors.toList());
[b]跳过指定数量的元素[/b] Stream 支持 skip(n) 方法,返回一个扔掉了前n个元素的流。如果流中元素不足n个,则返回一 个空流。limit(n) 和 skip(n) 是互补的
List<Dish> dishSkip = Dish.menu.stream().filter(d -> d.getCalories() > 300).skip(2) //去掉符合要求的集合中的前2个元素后返回
.collect(Collectors.toList());
dishSkip.forEach(System.out::println);
map 操作 Stream 支持 map 方法,它会接受一个函数作为参数。这个函数会被应用到每个元素上,并将其映 射成一个新的元素
List<String> list = st.skip(0).limit(2).map(s->s.toUpperCase()).collect(Collectors.toList());
[b]元素求和[/b]
List<Integer> numbers = Arrays.asList(3,4,5,1,2);
int sum1 = numbers.stream().reduce(0,(a, b) -> a + b);
System.out.println(sum1);
int sum2 = numbers.stream().reduce(0,Integer::sum);
System.out.println(sum2);
最大值
int max = numbers.stream().reduce(0,Integer::max);
System.out.println(max);
最小值
//reduce不接受初始值,返回一个Optional对象(考虑流中没有任何元素的情况)
Optional<Integer> min = numbers.stream().reduce(Integer::min);
min.ifPresent(System.out::println);
[b]总结[/b] 以上所述是小编给大家介绍的java8中的Stream数据流,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程素材网网站的支持!
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部