再美不及姑娘你
又见西风上碧树

Consumer<T>:包含两个方法

void accept(T t):对给定的参数执行操作

default Consumer <T> andThen(Consumer after):返回一个组合的Consumer,依次执行此操作,然后执行after操作

package Demo0512;

import java.util.function.Consumer;

public class ConsumerDemo {
  public static void main(String[] args) {
      //调用
      operatorString("最美不过姑娘你",s-> System.out.println(s));
      System.out.println("-----------------------------------------------------------");
      //调用消费两个字符串
      operatorStringtwo("最美不过姑娘你",s-> System.out.println(s),s-> System.out.println(new StringBuilder(s).reverse().toString()));

  }
  //定义一个方法,消费一个字符串数据
  private static void operatorString(String name, Consumer<String> ca){
      ca.accept(name);
  }
  //定义一个方法,消费两个个字符串数据
  private static void operatorStringtwo(String name, Consumer<String> ca,Consumer<String> co){
      ca.andThen(co).accept(name);
  }
}

练习:

1.定义一个字符串数组String [] name={"张三,30","李四,45","王五,52"};

2.将信息按照姓名: ;年龄 : ;格式打印

3.要求将打印姓名的动作作为第一个Consumer接口的Lambda实例,将打印年龄的动作作为第二 个Consumer接口的Lambda实例并组合起来

package Demo0512;

import java.util.function.Consumer;

public class ConsumerDemo01 {
public static void main(String[] args) {
//定义一个字符串数组
String[] name = {"张三,15", "李四,56", "王五,56"};
//调用方法
stringInfo(name, str -> {
String name1 = str.split(",")[0];
System.out.print("姓名:" + name1);
}, str -> {
int age = Integer.parseInt(str.split(",")[1]);
System.out.println("年龄:" + age);
});

}

//定义一个方法,进行组合操作
private static void stringInfo(String[] name, Consumer<String> cp, Consumer<String> co) {
//遍历字符串数组
for (String str : name) {
cp.andThen(co).accept(str);
}
}
}

posted on 2022-05-12 15:59  再美不及姑娘你  阅读(334)  评论(0)    收藏  举报