Java8 方法引用和Stream流

本文介绍了Java8中的流(Stream)概念及其操作,包括中间操作和终端操作,如filter、distinct、limit、skip、map等。同时,讨论了如何从集合、数组和值创建流,以及如何进行归约、排序、去重等操作。此外,文章还提到了方法引用在流操作中的应用。
摘要由CSDN通过智能技术生成

什么是流

流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种高级集合。

流的操作种类

流的操作分为两种,分别为中间操作和终端操作。

  • 中间操作 当数据源中的数据上了流水线后,这个过程对数据进行的所有操作都称为“中间操作”。 中间操作仍然会返回一个流对象,因此多个中间操作可以串连起来形成一个流水线。
  • 终端操作 当所有的中间操作完成后,若要将数据从流水线上拿下来,则需要执行终端操作。 终端操作将返回一个执行结果,这就是你想要的数据。

流的操作过程

使用流一共需要三步:

  1. 准备一个数据源
  2. 执行中间操作 中间操作可以有多个,它们可以串连起来形成流水线。
  3. 执行终端操作 执行终端操作后本次流结束,你将获得一个执行结果。

使用流

创建流

在使用流之前,首先需要拥有一个数据源,并通过StreamAPI提供的一些方法获取该数据源的流对象。数据源可以有多种形式:

集合

List<String> list = Arrays.asList("hello", "world");
Stream<String> stream = list.stream();

数组

String[] names = {
   "a","b","c"};
Stream<String> stream = Arrays.stream(names);

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

筛选 filter

准备工作,先创建一个实体:Person

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Person {
   

    private String  name;

    private Integer age;

    private String gender;

    private Boolean isStudent;

    public static List<Person> buildData(){
   
        List<Person> data = new ArrayList<>();
        data.add(Person.builder().name("张三").age(22).gender("男").isStudent(Boolean.TRUE).build());
        data.add(Person.builder().name("李斯").age(19).gender("男").isStudent(Boolean.TRUE).build());
        data.add(Person.builder().name("吴玉").age(26).gender("女").isStudent(Boolean.FALSE).build());
        data.add(Person.builder().name("杨贵妃").age(23).gender("女").isStudent(Boolean.
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值