Lambda与Stream详解
Lambda与Stream详解本章导读Lambda表达式和Stream API是Java 8最具革命性的两大特性,它们共同为Java带来了函数式编程的能力。Lambda让代码更简洁,Stream让数据处理更优雅,二者配合使用可以大幅提升开发效率和代码质量。学习目标:目标1:掌握Lambda表达式的语法规则和常用函数式接口目标2:熟练使用Stream API进行数据处理,理解中间操作和终端操作的区别目标3:合理使用Collectors工具类完成复杂的数据收集和统计任务前置知识:Java基础语法、集合框架、匿名内部类阅读时长:约 35 分钟一、知识概述Lambda表达式和Stream API是Java 8最重要的新特性,它们为Java带来了函数式编程的能力,使代码更加简洁、易读。1.1 Lambda表达式简介┌─────────────────────────────────────────────────────────────┐ │ Lambda表达式语法 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ 基本语法: │ │ (参数列表) - { 方法体 } │ │ │ │ 示例: │ │ (a, b) - a + b // 两参数相加 │ │ s - System.out.println(s) // 打印字符串 │ │ () - "Hello" // 无参数返回字符串 │ │ (x) - x * x // 平方 │ │ │ │ 类型推断:编译器自动推断参数类型 │ │ │ └─────────────────────────────────────────────────────────────┘1.2 函数式接口// ============================================// 常用函数式接口// ============================================publicclassFunctionalInterfaces{publicstaticvoidmain(String[]args){// Runnable:无参数无返回值Runnablerunnable=()-System.out.println("Hello");// SupplierT:无参数返回TSupplierStringsupplier=()-"Hello";// ConsumerT:接受T无返回值ConsumerStringconsumer=s-System.out.println(s);// FunctionT, R:接受T返回RFunctionString,Integerfunction=s-s.length();// PredicateT:接受T返回booleanPredicateStringpredicate=s-s.length()5;// BiFunctionT, U, R:接受T和U返回RBiFunctionString,String,StringbiFunction=(a,b)-a+b;// BinaryOperatorT:接受两个T返回TBinaryOperatorIntegeradd=(a,b)-a+b;// UnaryOperatorT:接受T返回TUnaryOperatorStringupper=s-s.toUpperCase();}}二、Lambda表达式详解2.1 Lambda基本用法// ============================================// Lambda表达式示例// ============================================publicclassLambdaDemo{publicstaticvoidmain(String[]args){ListStringlist=Arrays.asList("apple","banana","orange");// 传统写法Collections.sort(list,newComparatorString(){@Overridepublicintcompare(Stringa,Stringb){returna.compareTo(b);}});// Lambda写法Collections.sort(list,(a,b)-a.compareTo(b));// 方法引用Collections.sort(list,String::compareTo);// forEach遍历list.forEach(s-System.out.println(s));list.forEach(System.out::println);// 方法引用类型// 静态方法引用:ClassName::staticMethod// 实例方法引用:instance::method// 类型方法引用:ClassName::method// 构造方法引用:ClassName::new}}2.2 方法引用// ============================================// 方法引用详解// ============================================publicclassMethodReferenceDemo{publicstaticvoidmain(String[]args){// 静态方法引用FunctionString,Integerparser=Integer::parseInt;intnum=parser.apply("123");
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2555073.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!