1.方法应用
对象方法引用: 类名::实例方法. (参数1,参数2)->参数1.实例方法(参数2)
package com.lpt.demo01;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Supplier;
public class Test01 {
public static void main(String[] args) {
// Function<String,Integer> function=(str)->{
// return str.length();
// };
// Function<String,Integer> function=String::length;
// Integer l = function.apply("hello");
// System.out.println(l);
// BiFunction<String,String,Boolean> booleanBiFunction=(t,u)->{
// return t.equals(u);
// };
// Boolean apply = booleanBiFunction.apply("hello", "world");
// System.out.println(apply);
// Supplier<String> supplier=()->{
// return new String("hello");
// };
//Function<String,People> function=(n)->new People(n);
Function<String,People> function=People::new;
People people = function.apply("hello");
System.out.println(people);
}
}
class People{
private String name;
public People() {
}
public People(String name) {
this.name = name;
}
@Override
public String toString() {
return "People{" +
"name='" + name + '\'' +
'}';
}
}
2.Stream流
Java8的两个重大改变,一个是Lambda表达式,另一个就是本节要讲的Stream API表达式。==Stream 是Java8中处理集合的关键抽象概念==,它可以对集合进行非常复杂的查找、过滤、筛选等操作.
2.1 为什么使用Stream流
当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。我们来体验 集合操作数据的弊端,需求如下:
一个ArrayList集合中存储有以下数据:
需求:1.拿到所有姓张的 2.拿到名字长度为3个字的 3.打印这些数据
代码如下:
public class My {
public static void main(String[] args) {
// 一个ArrayList集合中存储有以下数据:张无忌,周芷若,赵敏,张强,张三丰
// 需求:1.拿到所有姓张的 2.拿到名字长度为3个字的 3.打印这些数据
ArrayList<String> list = new ArrayList<>();
Collections.addAll(list, "张无忌", "周芷若", "赵敏", "张强", "张三丰");
// 1.拿到所有姓张的
ArrayList<String> zhangList &#