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

浙公网安备 33010602011771号