java8的stream类

Stream 是用函数式编程方式在集合类上进行复杂操作的工具。

1.collect(toList())

由 Stream 里的值生成一个列表

List<String> collected = Stream.of("a", "b", "c")
                               .collect(Collectors.toList()); 

2.map

将一个流中的值转换成一个新的流

List<String> collected = Stream.of("a", "b", "hello")
                               .map(string -> string.toUpperCase())
                               .collect(toList());

3.filter

符合条件的值被保留下来

List<String> beginningWithNumbers = Stream.of("a", "1abc", "abc1")
                                          .filter(value -> isDigit(value.charAt(0)))
                                          .collect(toList());

4.flatmap

首先将输入数据扁平化,然后再对flat后的值进行map操作

5.max、min

Track shortestTrack = tracks.stream()
                            .min(Comparator.comparing(track -> track.getLength()))
                            .get(); 

总结:

? 内部迭代将更多控制权交给了集合类。

? 和 Iterator 类似,Stream 是一种内部迭代方式。

? 将 Lambda 表达式和 Stream 上的方法结合起来,可以完成很多常见的集合操作。

参考:《java8函数式编程》

时间: 2024-10-08 11:36:22

java8的stream类的相关文章

Java 8 新特性:Java 类库的新特性之 Stream类 ——诺诺&quot;涂鸦&quot;记忆

----------   诺诺学习技术交流博客.期待与您交流!    ---------- 详情请查看:http://blog.csdn.net/sun_promise  Java 类库的新特性之 Stream类 (注:此文中涉及到的一部分图片为网络图片,若有问题,请联系我将其删除.) 一.Java8对IO/NIO 的改进 Java 8 对 IO/NIO 也做了一些改进,主要包括: 改进了java.nio.charset.Charset 的实现,使编码和解码的效率得以提升: 精简了jre/lib

Java之Lambda表达式和Stream类简单例子

开心一笑 提出问题 java的lambda表达式和Stream如何使用??? 解决问题 Lambda表达式的语法 基本语法: (parameters) -> expression 或 (parameters) ->{ statements; } 看例子学习吧! 例一:定义一个AyPerson类,为之后的测试做准备. package com.evada.de; import java.util.Arrays; import java.util.List; class AyPerson{ priv

Java8之Optional类

写在前头 今天再看阿里的Java开发手册,里面异常处理第10条提到这样一个建议. [推荐]防止 NPE ,是程序员的基本修养,注意 NPE 产生的场景:1 ) 返回类型为基本数据类型,return 包装数据类型的对象时,自动拆箱有可能产生 NPE.反例: public int f() { return Integer 对象}, 如果为 null ,自动解箱抛 NPE .2 ) 数据库的查询结果可能为 null .3 ) 集合里的元素即使 isNotEmpty ,取出的数据元素也可能为 null

Java8中Stream的归约与收集

Java8中Stream的归约与收集 归约 reduce(T identity, BinaryOperator) / reduce(BinaryOperator) --可以将流中元素反复结合起来,得到一个值 public class Employee { private String name; private Integer age; private Double salary; private Status status; public Employee() { super(); } pub

Java8 时间日期类操作

Java8 时间日期类操作 Java8的时间类有两个重要的特性 线程安全 不可变类,返回的都是新的对象 显然,该特性解决了原来java.util.Date类与SimpleDateFormat线程不安全的问题.同时Java8的时间类提供了诸多内置方法,方便了对时间进行相应的操作. 上图为Java8时间类的覆盖范围 相关的类有 LocalDate LocalTime LocalDateTime ZoneId ZonedDateTime Instant Instant类 Instant类用来表示格林威

Java8 增强工具类 Arrays 笔记

随手笔记做Arrays工具类分为两类单线程和多线程 以下所有带有下标范围限定的,都为含头不含尾 单线程:1.binarySearch:查找数组中为 key 的 下标 :binarySearch 二分法查找,数组必须有序,且存在此数组中,否则返回负数下标 Arrays.binarySearch(Object[] a,Object key):intArrays.binarySearch(Object[] a, int fromIndex, int toIndex,Object key):int跳至例

java8之Stream API(创建Stream)

你已经了解到了,通过Java8在Collection接口中新添加的stream方法,可以将任何集合转化为一个Stream.如果你面对的是一个数组,也可以用静态的Stream.of方法将它转化为一个Stream: package java8test; import java.util.stream.Stream; public class T6 {     public static void main(String[] args) {         //使用Stream的静态方法of     

Java8之Stream/Map

本篇用代码示例结合JDk源码讲了Java8引入的工具接口Stream以及新Map接口提供的常用默认方法.    参考:http://winterbe.com/posts/2014/03/16/java-8-tutorial/ 1.Stream示例 package com.mavsplus.java8.turtorial.streams; import java.util.ArrayList; import java.util.List; import java.util.Optional; im

java8之stream

lambda表达式是stream的基础,初学者建议先学习lambda表达式,http://www.cnblogs.com/andywithu/p/7357069.html 1.初识stream 先来一个总纲: 东西就是这么多啦,stream是java8中加入的一个非常实用的功能,最初看时以为是io中的流(其实一点关系都没有),让我们先来看一个小例子感受一下: @Before public void init() { random = new Random(); stuList = new Arr