java之Function、Consumer和Predicate⽤法及区别⾸先参数是函数式接⼝类型的⼊参时,这个⼊参类型可以是lamda表达式代替。
1.Function:传⼊⼀个类型值返回⼀个类型值
源码:
@FunctionalInterface
public interface Function<T, R> {
/**
木兰剑
* Applies this function to the given argument.
*
* @param t the function argument
* @return the function result
*/
R apply(T t);
.......
}
⽰例⼀:
Function<String,String> function=new Function() {
@Override
public Object apply(Object o) {
return o;
}
};
String str1=function.apply("aaa");
System.out.println(str1);
⽰例⼆:向城
public static String validateValue(String name,Function<String,String> function){
return function.apply(name);
}
public static void main(String[] args){
String name="";
System.out.println(validateValue(name,inputStr -> inputStr.isEmpty()?"不能为空":inputStr));
}
inputStr相当于 apply⽅法的⼊参,inputStr.isEmpty()?"不能为空":inputStr相当于apply⽅法的实现(Lamda表达式)。以下同理。
2.Consumer: 传⼊⼀个类型值,没有返回值
源码:
@FunctionalInterface
public interface Consumer<T> {
/**
* Performs this operation on the given argument.
*
* @param t the input argument
*/
void accept(T t);
...
}
海贼王维尔戈
⽰例:
public static void main(String[] args){
学科专业分类目录String name="aaa";
Consumer<String> consumer=new Consumer() {
保持清洁@Override
public void accept(Object o) {
System.out.println(o+"===");
}
};
consumer.accept(name);
}
3.Predicate:⼀般⽤于做判断,返回boolean类型
源码:
@FunctionalInterface
public interface Predicate<T> {
/**
* Evaluates this predicate on the given argument.
*
* @param t the input argument
* @return {@code true} if the input argument matches the predicate, * otherwi {@code fal}
*/
boolean test(T t);
.
..
恩施风景}
⽰例⼀:
String name="bbb";
Predicate<String> predicate=new Predicate() {
@Override
public boolean test(Object o) {
return o.equals("aaa");
}
约客古诗
};
System.out.st(name));
印画
⽰例⼆:
public static boolean validateValue(String name,Predicate<String> predicate){
st(name);
}
public static void main(String[] args){
String name="aaa";
System.out.println(validateValue(name,inputStr -> inputStr.equals("aaa")? true:fal)); }