Java8新特性之stream流

2022-05-13 09:44:31 浏览数 (1)

昨天复习了一下java新特性stream流的知识,今天记录一下笔记,下次看的时候就不用重复复习啦。

一、是什么

在Java 8中,得益于Lambda所带来的函数式编程, 引入了一个全新的Stream流概念。

Stream流的主要目的:

用于简化集合和数组操作的API。

Stream流的作用是什么,结合了什么技术?

简化集合、数组操作的API。结合了Lambda表达式。

说说Stream流的思想和使用步骤。

  1. 先得到集合或者数组的Stream流(就是一根传送带)。
  2. 把元素放上去。
  3. 然后就用这个Stream流简化的API来方便的操作元素。

二、获取流的方式

Stream操作集合或者数组的第一步是先得到Stream流,然后才能使用流的功能。

集合获取Stream流的方式

可以使用Collection接口中的默认方法stream​()生成流

名称

说明

default Stream<E> stream​()

获取当前集合对象的Stream流

数组获取Stream流的方式

名称

说明

public static <T> Stream<T> stream(T[] array)

获取当前数组的Stream流

public static<T> Stream<T> of(T... values)

获取当前数组/可变数据的Stream流

三、常用方法

Stream流的常用API(中间操作方法)

名称

说明

Stream<T> filter(Predicate<? super T> predicate)

用于对流中的数据进行过滤。

Stream<T> limit​(long maxSize)

获取前几个元素

Stream<T> skip​(long n)

跳过前几个元素

Stream<T> distinct​()

去除流中重复的元素。依赖(hashCode和equals方法)

static <T> Stream<T> concat​(Stream a, Stream b)

合并a和b两个流为一个流

注意:

中间方法也称为非终结方法,调用完成后返回新的Stream流可以继续使用,支持链式编程。

在Stream流中无法直接修改集合、数组中的数据。

Stream流的常见终结操作方法

名称

说明

void forEach​(Consumer action)

对此流的每个元素执行遍历操作

long count​()

返回此流中的元素数

注意:终结操作方法,调用完成后流就无法继续使用了,原因是不会返回Stream了。

2种方法的区别:

终结和非终结方法的含义是什么?

终结方法后流不可以继续使用,非终结方法会返回新的流,支持链式编程。

四、案例测试

常用API

创建一个集合

代码语言:javascript复制
//创建一个集合,存储多个字符串元素
ArrayList<String> list = new ArrayList<String>();
list.add("林青霞");
list.add("张曼玉");
list.add("王祖贤");
list.add("柳岩");
list.add("张敏");
list.add("张无忌");

输出所有以"张"开头的元素

代码语言:javascript复制
list.stream().filter(s -> s.startsWith("张")).forEach(System.out::println);
11

常见终结操作方法

代码语言:javascript复制
//需求1:把集合中的元素在控制台输出
list.stream().forEach(System.out::println);
System.out.println("-----------统计集合中有几个以张开头的元素--------------------");
//需求2:统计集合中有几个以张开头的元素,并把统计结果在控制台输出
long count = list.stream().filter(s -> s.startsWith("张")).count();
System.out.println(count);

完!下次还需要记录的话,还会修改这个文章。

腾云先锋(TDP,Tencent Cloud Developer Pioneer)是腾讯云GTS官方组建并运营的技术开发者群体。这里有最专业的开发者&客户,能与产品人员亲密接触,专有的问题&需求反馈渠道,有一群志同道合的兄弟姐妹。来加入属于我们开发者的社群吧!

0 人点赞