1. 程式人生 > 其它 >JavaSE-23.1.3【常用函式式介面之Consumer、Consumer案例-按要求列印資訊】

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 }