案例1
import java.util.function.Consumer;
/**
* java.util.function.Consumer<T>:該接口的作用與Supplier接口作用相反,將創建的參數消費(使用)掉。
* Consumer接口中包含了唯一一個抽象方法void accept(T t);消費一個指定泛型的數據
*
* default Consumer<T> andThen(Consumer<? super T> after) {
* Objects.requireNonNull(after);
* return (T t) -> { accept(t); after.accept(t); };
* }
* andThen();方法將兩個Consumer接口組合在一起,對數據進行消費。
*
*/
public class ConsumerDemo {
/*
定義一個方法,方法的泛型指定爲String,傳遞的參數爲字符串類型的數據,調用accept方法使用該數據
*/
public static void dealData(String str, Consumer<String> con){
con.accept(str);
}
public static void main(String[] args) {
//使用Lambda表達式實現函數式編程
*//*dealData("ABC",(String str)->{
System.out.println(str);
});*//*
//簡化Lambda表達式
dealData("ABC",str->System.out.println(str));
}
}
案例2
import java.util.function.Consumer;
/**
* java.util.function.Consumer<T>:該接口的作用與Supplier接口作用相反,將創建的參數消費(使用)掉。
* Consumer接口中包含了唯一一個抽象方法void accept(T t);消費一個指定泛型的數據
*
* default Consumer<T> andThen(Consumer<? super T> after) {
* Objects.requireNonNull(after);
* return (T t) -> { accept(t); after.accept(t); };
* }
* andThen();方法將兩個Consumer接口組合在一起,對數據進行消費。
*
*/
public class ConsumerDemo {
/*
定義一個方法,方法的泛型指定爲String,傳遞的參數爲字符串類型的數據和兩個Consumer接口,調用accept方法使用該數據
*/
public static void method(String str, Consumer<String> con1, Consumer<String> con2){
/*con1.accept(str);
con2.accept(str);*/
//使用endThen方法,將兩個Consumer接口連接在一塊
con1.andThen(con2).accept(str);//先執行con1使用數據,在執行con2使用數據
}
public static void main(String[] args) {
//傳遞的參數爲一個字符串、兩個Lambda表達式
method("Hello",
(str)->{
System.out.println(str.toUpperCase());
},
(str)->{
System.out.println(str.length());
});
}
}
案例3:
import java.util.function.Consumer;
/**
* java.util.function.Consumer<T>:該接口的作用與Supplier接口作用相反,將創建的參數消費(使用)掉。
* Consumer接口中包含了唯一一個抽象方法void accept(T t);消費一個指定泛型的數據
*
* default Consumer<T> andThen(Consumer<? super T> after) {
* Objects.requireNonNull(after);
* return (T t) -> { accept(t); after.accept(t); };
* }
* andThen();方法將兩個Consumer接口組合在一起,對數據進行消費。
*
*/
public class ConsumerDemo {
public static void main(String[] args) {
String[] arr = {"AA,男","BB,女","CC,男"};
//使用匿名內部類實現
/* printInfo(arr, new Consumer<String>() {
@Override
public void accept(String s) {
System.out.print(" 姓名:"+s.split(",")[0]+" ");
}
}, new Consumer<String>() {
@Override
public void accept(String s) {
System.out.print("性別:"+s.split(",")[1]);
}
});*/
//使用Lambda表達式實現
printInfo(arr, s -> System.out.print("姓名:"+s.split(",")[0])
, s -> System.out.println(" 性別:"+s.split(",")[1]));
}
//定義一個方法,傳遞一個數組和兩個Consumer接口
public static void printInfo(String[] arrs, Consumer<String> con1, Consumer<String> con2){
for (String arr : arrs) {
con1.andThen(con2).accept(arr);
}
}
}