消费者Consumer
package Line202;
import java.util.function.Consumer;
public class demo03 {
public static void main(String[] args) {
/* 匿名内部类方法
shower("郭飞宇", new Consumer<String>() {
@Override
public void accept(String s) {
System.out.println(s);
}
});*/
//消费者就是一个函数内输入一个字符串,后面紧跟着一个Consumer对象
//对其进行处理,如accept获取到对其处理
//ps:consumer1.andThen(consumer2).accept,就是先对c1进行处理
// ,在处理c2
shower2("guoooo",(name)-> System.out.printf(name),(name)-> System.out.println("我是consumer2"+name));
//前面要加name值,不要忘记
}
/* public static void shower(String name, Consumer<String> consumer){
consumer.accept(name);
} */
public static void shower2(String name, Consumer<String> consumer1,Consumer<String> consumer2){
consumer1.andThen(consumer2).accept(name);
}
}
//应用实践,你看,理解了之后就写出来了,
package Line202;
import java.util.ArrayList;
import java.util.function.Consumer;
public class demo031 {
public static void main(String[] args) {
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("郭飞宇,21");
arrayList.add("郭飞,22");
arrayList.add("宇,24");
arrayList.add("郭,2");
shower(arrayList,name-> System.out.println(name.split(",")[0]),
name-> System.out.println(name.split(",")[1]));
}
public static void shower(ArrayList<String> arrayList, Consumer<String> consumer1,Consumer<String> consumer02){
for (String s:arrayList
) {
consumer1.andThen(consumer02).accept(s);//等效于consumer1.accept(), consumer02.accept()
}
}
}
判断,Predicate
- 判断,就是对一个字符串/数字进行检查,例如检查是否满足要求,如字符串长度是否介于一个区间内,是否包含有逗号标点符号,这些东西自己可以用自己的方法写出来,可能接口提出来规定好了,它的作用也就是就在于统一和规范,大家一起遵守,是的阅读代码的人容易理解
public class demo04 {
public static void main(String[] args) {
boolean d= shower("郭飞宇2",s->s.length()>3,s->s.length()<5);
System.out.println(d);
System.out.println("郭飞宇2".length());
}//return 的类型不必在下方表示出,lambda表达式表达即可
public static boolean shower(String name,Predicate<String> s,Predicate<String> s1){
return s.and(s1).test(name);
//return s.negate().test(name);
}
}
自己实现一下吧