2024/4/2 图书馆里的22点看的steam流

中间操作:Intermediate Operations
● filter:过滤; 挑出我们用的元素
● map: 映射: 一一映射,a 变成 b
○ mapToInt、mapToLong、mapToDouble
● flatMap:打散、散列、展开、扩维:一对多映射


package com.atguigu;

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

import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Function;

@NoArgsConstructor
@AllArgsConstructor
@Data
class Person{
    private String name;
    private String gender;
    private Integer age;
}

interface MyInterface{
    int sum(int i,int j);
}
interface Myhaha{
    int haha();
}
//检查注解,帮我们快速检查我们写的接口是否函数式接口
@FunctionalInterface
interface Myhehe{
    int hehe(int i);
}


//1.自己写实现类
class MyInetfaceImpl implements MyInterface{
    @Override
    public int sum(int i,int j){
        return i+j;
    }
}

public class Lambda {

    public static void main(String[] args) {

        BiConsumer<String,String> function=(a,b)->{
         //   System.out.println("哈哈"+a+";呵呵"+b);
        };
        function.accept("1","2");

        Function<String,Integer> f2=(String x)->Integer.parseInt(x);
       // System.out.println(f2.apply("2"));

        List<Person> list=List.of(
                new Person("雷锋羊","男",16),
                new Person("雷羊","男",8),
                new Person("羊","男",23),
                new Person("雷锋","男",6)
        );

       // list.stream()
         //       .filter(person -> person.getAge()>18) //挑出大于18
           //     .forEach(System.out::println);
        
        list.stream()
                .filter(person -> {
                    System.out.println("filter "+person);
                    return person.getAge()>10;
                })
                //.map(person -> person.getName()) //拿到所有人的姓名
                .forEach(System.out::println);



    }









    public static void aaaa(String[] args) {
        //1.自己创建实现类对象
        MyInterface my=new MyInetfaceImpl();
        System.out.println(my.sum(2,3));

        //2、创建匿名实现类对象
        MyInterface myInterface = new MyInterface() {
            @Override
            public int sum(int i, int j) {
                return i+j;
            }
        };
        System.out.println(myInterface.sum(1,2));


        //3、lambda表达式:语法糖  参数列表  + 箭头 + 方法体
        MyInterface myInterface1=(x,y)->{return x*y;};
        System.out.println(myInterface1.sum(2,3));

        //参数位置最少情况
        Myhaha myhaha=()->{return 1;};

        System.out.println(myhaha.haha());

        Myhehe myhehe=y->{return y*y;};
        System.out.println(myhehe.hehe(4));

        Myhehe myhehe1=y->y+1;
        System.out.println(myhehe1.hehe(114514));

        //完整写法如上:
        //简化写法:
        //1)、参数类型可以不写,只写(参数名),参数变量名随意定义;
        //    参数表最少可以只有一个 (),或者只有一个参数名;
        //2、方法体如果只有一句话,{} 可以省略

        Myhehe  hehe3 = y -> y + 1;
        System.out.println(hehe3.hehe(7));
        //以上Lambda表达式简化了实例的创建。


        //总结:
        // 1、Lambda表达式: (参数表) -> {方法体}
        // 2、分辨出你的接口是否函数式接口。 函数式接口就可以lambda简
    }
}

输出是

filter Person(name=雷锋羊, gender=男, age=16)
Person(name=雷锋羊, gender=男, age=16)
filter Person(name=雷羊, gender=男, age=8)
filter Person(name=羊, gender=男, age=23)
Person(name=羊, gender=男, age=23)
filter Person(name=雷锋, gender=男, age=6)

Process finished with exit code 0

posted @ 2024-04-02 22:04  redzhengtao  阅读(19)  评论(0)    收藏  举报