美文网首页
java8之Stream Api解析

java8之Stream Api解析

作者: CurryYoung | 来源:发表于2018-11-26 22:09 被阅读0次

流操作之中间操作简介

中间操作主要是用来对Stream做出相应转换及限制流,实际上是将源Stream转换为一个新的Stream,以达到需求效果。

常用中间操作方法

|操作|类型|返回类型|操作参数|函数描述符|作用|

|-----|-----|----|------|-------|-------|

|filter|中间|Stream<T>|Predicate<T>  |T -> boolean|返回参数函数为true的元素的流|

|map  |中间|Stream<T>|Function<T, R> |T -> R      |参数函数会被应用到每个元素上,并将其映射成一个新的元素|

|flatMap|中间|Stream<T>|Function<T, R> |T -> R      |flatmap 方法让你把一个流中的每个值都换成另一个流,然后把所有的流连接起来成为一个流。|

|limit |中间|Stream<T>|              ||返回前n个元素的流|

|skip  |中间|Stream<T>|              ||返回一个跳过前n个元素的流(不足n个元素,返回一个空流)|

|sorted|中间|Stream<T>|Comparator<T>  |(T, T) -> int|按照传入的Comparator安排续|

|distinct|中间|Stream<T>|            |            |根据流所生成元素的hashCode 和 equals 方法,实现去重后的流|

### filter方法

使用实例:遍历出相同的字符串

```java

Stream.of("a", "a", "b")

                .filter((s) -> s.startsWith("a"))

                .forEach(System.out::println);

  //return:"a","a"

```

### map方法

类似的有:mapToDouble,mapToInt,mapToLong。

使用实例:求和处理

```java

Stream.of(1, 1, 1)

              .mapToInt(Integer::intValue)

              .sum();

      //return:3

```

```java

Long l=Stream.of(1L,2L,4L)

                .mapToLong(Long::longValue)

                .sum();

//return:7

```

### flatMap方法

使用实例: 给 定 单 词 列 表"Hello","World" ,你想要返回列表 "H","e","l", "o","W","r","d" ,做法就是先分割,在去重,返回字符串数组。

```java

  List<String> uniqueCharacters =

                Stream.of("heelo","adafa")

                        .map(w -> w.split(""))

                        .flatMap(Arrays::stream)

                        .distinct()

                        .collect(Collectors.toList());

```

### limit方法和skip方法

使用实例:取前n个元素

```java

Stream.of(1, 2, 3, 4, 5)

  .limit(3)

    .forEach(i -> System.out.println(i));

//return 1,2,3

```

使用实例:跳过前3个元素

```java

Stream.of(1, 2, 3, 4, 5)

  .skip(3)

    .forEach(System.out::println);

//return 4,5

```

### distinct方法

使用实例:去重操作

```java

Stream.of("a", "b", "c", "c")

                .distinct()

                .forEach(System.out::println);

//return:a,b,c

```

相关文章

  • Java8之Stream流(六)收集

    Java8之Stream流(一)基础体验 Java8之Stream流(二)关键知识点 Java8之Stream...

  • Java8新特性——强大的Stream

    Stream API 了解Stream Java8中有两个比较大的改变 Lambda表达式 Stream API ...

  • java8之Stream Api解析

    流操作之中间操作简介 中间操作主要是用来对Stream做出相应转换及限制流,实际上是将源Stream转换为一个新的...

  • JAVA8中Stream学习

    JAVA8中Stream学习 最近看了下Stream的api: Stream用户操作Collection族的数据,...

  • Stream

    使用 Stream API 高逼格 优化 Java 代码 Java8 Stream流中的 collect() 别再...

  • Java8 stream API以及常用方法

    Java8引入了全新的Stream API,Stream API为Java编程提供了丰富的函数式编程操作。Stre...

  • Java8 Stream-API

    Java8 Stream-API Stream 流类似集合类中的Iterator,但是比Iterator高级,只需...

  • Java 8 Stream 教程

    本文采用实例驱动的方式,对JAVA8的stream API进行一个深入的介绍。虽然JAVA8中的stream AP...

  • java中List去重

    方法一、使用Set集合特性 方法二、使用java8 stream api

  • Java8 Stream API 笔记

    Java8 Stream API 笔记 常用的stream操作,做个记录,方便日后使用查询。 [TOC] 1. f...

网友评论

      本文标题:java8之Stream Api解析

      本文链接:https://www.haomeiwen.com/subject/dfaxfqtx.html