Stream API 知识点整理

StreamAPI简介

1.Stream API是java8的新特性,在日常开发中,streamAPI主要是用来对集合进行数据分析和处理。
2.当在集合中有筛选、修改、提取、计算等需求时,StreamAPI有着比for循环更好的可读性和可操作性。

StreamAPI特点

1.streamAPI操作的数据可以当作“流水线”,流水线的源头是数据源(大多情况是一个集合(通常情况下是List和Set),将数据中的元素挨个进行相同的操作。
2.若要对集合进行处理,则需我们手写处理代码,这就叫做外部迭代。而要对流进行处理,我们只需告诉流我们需要什么结果,处理过程由流自行完成,这就称为内部迭代。

StreamAPI的使用

1.stream的创建和使用

(1)集合.stream() (这种方式较为常用)

List<Person> list = new ArrayList<Person>(); 
Stream<Person> stream = list.stream();

(2)数组.stream()

String[] names = {"chaimm","peter","john"};
Stream<String> stream = Arrays.stream(names);

(3)Stream.of(v,v,v),直接用Stream.of()方法将类型相同的值转换成Stream

Stream<String> stream = Stream.of("chaimm","peter","john");

(4)文件流

try(Stream lines = Files.lines(Paths.get(“文件路径名”),Charset.defaultCharset())){
    //可对lines做一些操作
}catch(IOException e){
}

(5)iterator创建无限流

Stream.iterate(0, n -> n + 2)
      .limit(10)
      .forEach(System.out::println);
2.StreamAPI常用的操作函数

(1)筛选filter

filter函数参数是接收一段lambda表达式,此表达式返回值为Boolean类型,在执行过程中,StreamAPI中的数据只有使参数中的lambda表达式为true时会被保留,结果为false的会被过滤掉,例如:筛选出人群中的学生。`

List<Person> result = list.stream()
                    .filter(Person::isStudent)
                    .collect(toList());

(2)去重distinct

如果集合中有相同对象,则去除掉重复的结果就是distinct的结果‘

List<Person> result = list.stream()
                    .distinct()
                    .collect(toList());

(3)截取limit

在Stream中截取其中前n个数据

List<Person> result = list.stream()
                    .limit(3)
                    .collect(toList());

(4)跳过skip

跳过Stream中的前N条数据

List<Person> result = list.stream()
                    .skip(3)
                    .collect(toList());

(5)映射map

对Stream中的每一个元素执行一个函数,使执行结果以另一种形式输出。Stream会将每一个元素传输到map函数中执行lambda表达式,将执行的结果放入到一个新的Stream中

List<User> result = list.stream()
                    .map(User::getName)
                    .collect(toList());

(6)获取第一个元素findFirst

获取Stream中第一个元素

Optional<Person> person = list.stream().findFirst();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值