jdk1.8新特性——四大内置核心函数式接口
Posted 小志的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdk1.8新特性——四大内置核心函数式接口相关的知识,希望对你有一定的参考价值。
一、jdk1.8内置的四大核心函数式接口
-
Consumer : 消费型函数式接口,指方法有参数但是无返回值(即有去无回)。
void accept(T t);
-
Supplier : 供给型函数式接口,指方法无参数但是有返回值(即只知道获取返回值)。
T get();
-
Function<T, R> : 函数型函数式接口,指方法有参数且有返回值(即有去有回)。
R apply(T t);
-
Predicate : 断言型函数式接口,指方法有参数且返回值为boolean类型。
boolean test(T t);
二、消费型函数式接口示例
1、以Consumer接口类中的accept方法举例
2、示例代码如下:
package com.xz.springboot_java8.day4;
import java.util.function.Consumer;
/**
* @description: 消费型函数式接口示例(方法有参数但是无返回值)
* @author: xz
*/
public class Test1 {
public static void main(String[] args) {
getConsumer(1000,(x)-> System.out.println("xz游戏充值消费了【"+x+"】元"));
}
/**
* @param money 消费金额
* @param consumer 函数式接口
*/
public static void getConsumer(double money, Consumer<Double> consumer){
consumer.accept(money);
}
}
3、运行main函数,输出结果如下图:
三、供给型函数式接口示例
1、以Supplier接口类中的get方法举例
2、示例代码如下:
package com.xz.springboot_java8.day4;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
/**
* @description: 供给型函数式接口(方法无参数但是有返回值)
* @author: xz
*/
public class Test2 {
public static void main(String[] args) {
List<Integer> listNumber = getListNumber(20, () -> (int)(Math.random() * 100));
for(Integer num:listNumber){
System.out.println(num);
}
}
/**
* 生产指定个数的整数,并放入集合中
* @param number
* @param supplier
* @return
*/
public static List<Integer> getListNumber(int number, Supplier<Integer> supplier){
List<Integer> list = new ArrayList<>();
for(int i=0;i<number;i++){
int a=supplier.get();
list.add(a);
}
return list;
}
}
3、运行main函数,输出结果如下图:
四、函数型函数式接口示例
1、以Function接口类中的apply方法举例
2、示例代码如下:
package com.xz.springboot_java8.day4;
import java.util.function.Function;
/**
* @description: 函数型函数式接口(方法有参数且有返回值)
* @author: xz
*/
public class Test3 {
public static void main(String[] args) {
String str=getStrHandler("jdjdkka",(x)->x.substring(2, 5));
System.out.println(str);
}
/**
* @param str 传入的字符串
* @param function
* @return
*/
public static String getStrHandler(String str, Function<String,String> function){
return function.apply(str);
}
}
3、运行main函数,输出结果如下图:
五、断言型函数式接口示例
1、以Predicate接口类中的test方法举例
2、示例代码如下:
package com.xz.springboot_java8.day4;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
/**
* @description: 断言型函数式接口(方法有参数且返回值为boolean类型)
* @author: xz
*/
public class Test4 {
public static void main(String[] args) {
List<String> list = Arrays.asList("java", "jdk", "jre", "spring");
List<String> strList = getFilterStr(list, (x) -> x.length() > 3);
for (String str : strList) {
System.out.println(str);
}
}
/**
* 将满足条件的字符串,放入集合中
* @param list
* @param predicate
*/
public static List<String> getFilterStr(List<String> list, Predicate<String> predicate){
List<String> strList = new ArrayList<>();
for(String str:list){
if(predicate.test(str)){
strList.add(str);
}
}
return strList;
}
}
3、运行main函数,输出结果如下图:
以上是关于jdk1.8新特性——四大内置核心函数式接口的主要内容,如果未能解决你的问题,请参考以下文章
Java8新特性——Lambda表达式之四大核心函数式接口 & 方法/构造器/数组引用