Java8 Stream初体验
2015-02-23 21:45
302 查看
如果你能说对下面这个语句的正确输出,那么恭喜你,这篇文章就不用看了~
Java8的Stream为我们操作集合带来了极大的便利,下面就来翻译一下上面这个语句,Java8中Collection接口里面的stream方法可以返回Stream对象
distinct()方法和sql中的distinct关键字效果一样,就是去重,返回新的Stream
skip方法就是跳过,limit和sum跟sql里面的意义一样,一个限量,一个求和
skip(2),limit(4)后流里面只剩下,6、8、10、12了
于是乎,答案就出来了,36,你答对了吗?
List<Integer> nums = Arrays.asList(1,1,null,2,3,4,null,5,6,7,8,9,10); System.out.println("sum is:"+nums.stream().filter(num -> num != null).distinct(). mapToInt(num -> num * 2).peek(System.out::println).skip(2).limit(4).sum());
Java8的Stream为我们操作集合带来了极大的便利,下面就来翻译一下上面这个语句,Java8中Collection接口里面的stream方法可以返回Stream对象
public interface Collection<E> extends Iterable<E> { //其他方法省略 default Stream<E> stream() { return StreamSupport.stream(spliterator(), false); } }
filter(num -> num != null)filter方法顾名思义,就是根据条件过滤,条件就是num!=null,过滤之后返回新的Stream
distinct()方法和sql中的distinct关键字效果一样,就是去重,返回新的Stream
mapToInt(num -> num * 2)这个方法可以将Stream中的元素按要求进行转换,转换要求就是每个元素变成自身的2倍
peek(System.out::println)peek方法生成一个包含原Stream的所有元素的新Stream,同时会提供一个消费函数,这个消费函数就是打印自身,这里的::表示方法调用,参数就是stream里面的元素,啥叫被消费呢,被skip,被limit,都属于被消费~
skip方法就是跳过,limit和sum跟sql里面的意义一样,一个限量,一个求和
skip(2),limit(4)后流里面只剩下,6、8、10、12了
于是乎,答案就出来了,36,你答对了吗?
相关文章推荐
- 【转】Java8初体验(二)Stream语法详解
- java8初体验——optional、lambda、stream、map
- Java8初体验-Stream语法详解
- Java8初体验(二)Stream语法详解
- Java8初体验(二)Stream语法详解---符合人的思维模式,数据源--》stream-->干什么事(具体怎么做,就交给Stream)--》聚合
- Java8初体验(二)Stream语法 3
- Java8初体验(二)Stream语法 2
- java8__stream初体验
- Java8初体验(二)Stream语法
- 相对路径获取JAVA配置文件Class.getResourceAsStream() & ClassLoader的getResourceAsStream()
- java报表初体验(一)!!
- JAVA BufferStream,流的例子
- com.mysql.jdbc.PreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V问题原因
- Java 流(Stream)简介:3、对象序列化
- java中使用ObjectOutputStream和ObjectInputStream时产生的“invalid stream header”错误解决方法
- Java 流(Stream)简介:1、基本的输入流和输出流
- Java的模板引擎Velocity初体验-Java基础-Java-编程开发
- 初学Java语言之多态初体验
- java操作excel杂谈及jxls初体验
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Underlying input stream returned zero bytes