Stream流
中间方法
distinct() 使用HashSet去重
终结方法
toArray()
value 表示 流中数据的个数,要跟数组的长度保持一致。
collect()
收集到map中,比较复杂。需要指定 键 和 值 的生成规则。
方法引用
01_引用静态方法
引用类方法,其实就是引用类的静态方法
-
格式 类名::静态方法
-
范例 Integer::parseInt
Integer类的方法:public static int parseInt(String s) 将此String转换为int类型数据
java">public interface Converter {int convert(String s);}public class ConverterDemo {public static void main(String[] args) {//Lambda写法useConverter(s -> Integer.parseInt(s));//引用类方法useConverter(Integer::parseInt);}private static void useConverter(Converter c) {int number = c.convert("666");System.out.println(number);} }
02_引用成员方法
注意:2、3种中,static里不能引用非静态方法,需要先实例化new一个。
03_引用构造方法
引用构造器,其实就是引用构造方法
-
l格式 类名::new 范例 Student::new
java">public class Student {private String name;private int age;}public interface StudentBuilder {Student build(String name,int age);}public class StudentDemo {public static void main(String[] args) {//Lambda简化写法useStudentBuilder((name,age) -> new Student(name,age));//引用构造器useStudentBuilder(Student::new);}private static void useStudentBuilder(StudentBuilder sb) {Student s = sb.build("林青霞", 30);System.out.println(s.getName() + "," + s.getAge());} }
-
使用说明 Lambda表达式被构造器替代的时候,它的形式参数全部传递给构造器作为参数
04_使用类名引用成员方法
注意:这里并没有满足参数一致!!所以这里的流的类型是String,map中也必须用String的方法!可以按照上面的理解方式。
引用类的实例方法,其实就是引用类中的成员方法
-
格式 类名::成员方法
-
使用说明 Lambda表达式被类的实例方法替代的时候, 第一个参数作为调用者,后面的参数全部传递给该方法作为参数