JavaSE-23.1.3【常用函数式接口之Consumer、Consumer案例-按要求打印信息】
1 package day14.lesson1; 2 3 import java.util.function.Consumer; 4 5 /* 6 1.6 常用函数式接口之Consumer 7 8 Consumer接口 9 Consumer<T>接口也被称为消费型接口,它消费的数据的数据类型由泛型T指定 10 11 常用方法 12 void accept(T t) 对给定的参数执行此操作 13 default Consumer andThen(Consumer after) 返回一个组合的Consumer,依次执行此操作,然后执行after操作 14 */ 15 public class Demo6Consumer { 16 public static void main(String[] args) { 17 // Lambda表达式 18 /*operatorStr("tom", (String s) -> { 19 System.out.println(s); 20 });*/ 21 operatorStr("tom", s -> System.out.println(s)); // tom 22 /*operatorStr("tom", s->{ 23 StringBuilder sb = new StringBuilder(s); 24 StringBuilder reverse = sb.reverse(); 25 String ss = reverse.toString(); 26 System.out.println(ss); 27 });*/ 28 operatorStr("tom", s -> System.out.println(new StringBuilder(s).reverse().toString())); // mot 29 30 // 方法引用 31 operatorStr("tom", System.out::println); // tom 32 33 System.out.println("================================"); 34 operatorStr( 35 "sam", 36 s -> System.out.println(s), // 效果同System.out::println 37 s -> System.out.println(new StringBuilder(s).reverse().toString()) 38 ); // sam mas 39 } 40 41 // 消费一个字符串数据 42 private static void operatorStr(String name, Consumer<String> con){ 43 con.accept(name); 44 } 45 46 // 用不同方式消费同一个字符串数据两次 47 private static void operatorStr(String name, Consumer<String> con1, Consumer<String> con2){ // 函数重载 48 // con1.accept(name); 49 // con2.accept(name); 50 con1.andThen(con2).accept(name); // 效果同上两行 51 } 52 }
1 package day14.lesson1; 2 3 import java.util.function.Consumer; 4 5 /* 6 1.7 Consumer案例-按要求打印信息 7 8 案例需求 9 String[] strArray = {"林青霞,30", "张曼玉,35", "王祖贤,33"}; 10 字符串数组中有多条信息,请按照格式:“姓名:XX,年龄:XX"的格式将信息打印出来 11 要求: 12 把打印姓名的动作作为第一个Consumer接口的Lambda实例 13 把打印年龄的动作作为第二个Consumer接口的Lambda实例 14 将两个Consumer接口按照顺序组合到一起使用 15 */ 16 public class Demo7Consumer { 17 public static void main(String[] args) { 18 String[] strArr= {"tom,20", "amy,18", "sam,21"}; 19 20 /*printInfo( 21 strArr, 22 (String s) -> { 23 String name = s.split(",")[0]; 24 System.out.print("姓名:" + name); 25 }, 26 (String s) -> { 27 String ageStr = s.split(",")[1]; 28 int age = Integer.parseInt(ageStr); 29 System.out.println(",年龄:" + age); 30 } 31 );*/ 32 33 printInfo( 34 strArr, 35 s -> System.out.print("姓名:" + s.split(",")[0]), 36 s -> System.out.println(",年龄:" + Integer.parseInt(s.split(",")[1])) 37 ); 38 /* 39 姓名:tom,年龄:20 40 姓名:amy,年龄:18 41 姓名:sam,年龄:21 42 */ 43 } 44 45 private static void printInfo(String[] strArr, Consumer<String> con1, Consumer<String> con2){ 46 for (String str: strArr){ 47 /*con1.accept(str); 48 con2.accept(str);*/ 49 con1.andThen(con2).accept(str); 50 } 51 } 52 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!