Java8之Stream常用操作方式

*   *   [1.1、Student](about:blank#font_color_FF7F0011Student_16)

*   [2、初始化数据](about:blank#font_color_8B00FF_2_77)

*   *   [2.1、初始化集合](about:blank#font_color_FF7F0021_78)
  • 二、Stream常用操作方式

    • 1、筛选

      • 1.1、filter

      • 1.2、limit

      • 1.3、skip

      • 1.4、distinct

    • 2、映射

      • 2.1、map
    • 3、排序

      • 3.1、sorted()

      • 3.2、sorted(Comparator com)定制排序

    • 4、查找与匹配

      • 4.1、allMatch

      • 4.2、anyMatch

      • 4.3、noneMatch

      • 4.4、findFirst

      • 4.5、findAny

      • 4.6、conut

      • 4.7、max

      • 4.8、min

一、前期准备

====================================================================

1、创建对象


1.1、Student

在这里插入图片描述


public class Student {

    private int id;

    private String name;

    private String sex;

    private int age;



    public Student(int id, String name, String sex, int age) {

        this.id = id;

        this.name = name;

        this.sex = sex;

        this.age = age;

    }



    public int getId() {

        return id;

    }



    public void setId(int id) {

        this.id = id;

    }



    public String getName() {

        return name;

    }



    public void setName(String name) {

        this.name = name;

    }



    public String getSex() {

        return sex;

    }



    public void setSex(String sex) {

        this.sex = sex;

    }



    public int getAge() {

        return age;

    }



    public void setAge(int age) {

        this.age = age;

    }



    @Override

    public String toString() {

        return "Student{" +

                "id=" + id +

                ", name='" + name + '\'' +

                ", sex='" + sex + '\'' +

                ", age=" + age +

                '}';

    }

}





2、初始化数据


2.1、初始化集合

在这里插入图片描述


public class StreamTest {

    List<Student> studentList = Arrays.asList(

            new Student(1,"张三","男",20),

            new Student(2,"李四","男",25),

            new Student(3,"王五","女",18),

            new Student(4,"赵六","女",26)

    );

}



二、Stream常用操作方式

============================================================================

1、筛选


1.1、filter

filter从集合中过滤某些元素,例如查询集合中年龄大于20的数据集合

在这里插入图片描述


        //查询年龄大于20的数据集合

        List<Student> list = studentList.stream()

                .filter(s -> s.getAge()>20)

                .collect(Collectors.toList());



1.2、limit

limit,和mysql中的limit类似,返回指定数量的数据

在这里插入图片描述


        //查询年龄大于20的1个数据

        List<Student> list = studentList.stream()

                .filter(s -> s.getAge()>20)

                .limit(1)

                .collect(Collectors.toList());



1.3、skip

skip,跳过元素,返回一个跳过前n个元素的集合

在这里插入图片描述


        //查询年龄大于20的数据,前一个不要

        List<Student> list = studentList.stream()

                .filter(s -> s.getAge()>20)

                .skip(1)

                .collect(Collectors.toList());



1.4、distinct

distinct,筛选,通过元素的hashCode()和equals()去除重复元素

在这里插入图片描述


        //查询年龄大于20的数据,并去重

        List<Student> list = studentList.stream()

                .filter(s -> s.getAge()>20)

                .distinct()

                .collect(Collectors.toList());



2、映射


2.1、map

map,将集合元素转换成其他形式返回,接收一个函数作为参数,该函数作用到每一个元素上,并将其映射成一个新的元素

在这里插入图片描述


 

> **本文已被[开源项目:【一线大厂面试真题解析+核心总结学习笔记+最新全套讲解视频+实战项目源码讲义】](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)收录**

       //查询年龄大于20的数据,只获取姓名集合

        List<String> list = studentList.stream()

                .filter(s -> s.getAge()>20)

                .map(Student::getName)

                .collect(Collectors.toList());



3、排序


3.1、sorted()

sorted()自然排序

在这里插入图片描述


    //查询年龄大于20的数据,只获取姓名,并排序

        List<String> list = studentList.stream()

                .filter(s -> s.getAge()>20)

                .map(Student::getName)

                .sorted()

                .collect(Collectors.toList());



3.2、sorted(Comparator com)定制排序

sorted(Comparator com)定制排序,定制输入排序规则

在这里插入图片描述


//查询年龄大于20的数据,并根据姓名排序

        List<Student> list = studentList.stream()

                .filter(s -> s.getAge()>20)

                .sorted((e1,e2) -> {

                    return e1.getName().compareTo(e2.getName());

                })

                .collect(Collectors.toList());



4、查找与匹配


4.1、allMatch

allMatch检查是否匹配所有元素

在这里插入图片描述


//判断集合中所有的姓名是否都等于"张三"

        boolean flag = studentList.stream()

                .allMatch((e) -> e.getName().equals("张三"));



4.2、anyMatch

anyMatch是否匹配至少一个元素

总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

请转发本文支持一下

Name().equals(“张三”));




### [](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)4.2、anyMatch



> anyMatch是否匹配至少一个元素



# 总结

机会是留给有准备的人,大家在求职之前应该要明确自己的态度,熟悉求职流程,做好充分的准备,把一些可预见的事情做好。

对于应届毕业生来说,校招更适合你们,因为绝大部分都不会有工作经验,企业也不会有工作经验的需求。同时,你也不需要伪造高大上的实战经验,以此让自己的简历能够脱颖而出,反倒会让面试官有所怀疑。

你在大学时期应该明确自己的发展方向,如果你在大一就确定你以后想成为Java工程师,那就不要花太多的时间去学习其他的技术语言,高数之类的,不如好好想着如何夯实Java基础。下图涵盖了应届生乃至转行过来的小白要学习的Java内容:

**请转发本文支持一下**

[外链图片转存中...(img-TOPpvYsO-1723369934824)]

[外链图片转存中...(img-Yuyhk3ut-1723369934825)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)收录**
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值