java8 lambda 接口_Java8-Lambda表达式-函数式接口

这篇文章上次修改于 272 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

1. Java内置的四大核心函数式接口Consumer 消费型接口 消费对象

void accept(T t);

Supplier 供给型接口 生成对象

T get();

Function 函数型接口 指定特定功能

R apply(T t);

Predicate 断言型接口 进行条件判断

boolean test(T t);

1.1. 消费型接口void accept(T t);

Consumer 消费型接口// Consumer 消费型接口

@Test

public void testConsumer(){

//此时的(d) 小括号里有参数

//原因是因为 Consumer接口有参数

//void accept(T t);

consume(1000,(d)-> System.out.println(d));

}

public void consume(Integer n , Consumer con){

//函数接口接收 消费 形参n

con.accept(n);

}

1.2. 供给型接口Supplier 供给型接口

T get(); 小括号无参数// Supplier 供给型接口

@Test

public void testSupplier(){

//T get(); 小括号无参数

List numList = getNumList(10,() -> (int)(Math.random()*101));

for ( Integer i: numList

) {

System.out.println(i);

}

}

//调用此方法时,第二个参数提供一个数字集合

public List getNumList(int n, Supplier sup){

List numList = new ArrayList<>();

for (int i = 0; i < n; i++){

numList.add(sup.get()); //通过get方法得到数字 存到numList

}

return numList;

}

1.3. 函数型接口Function 函数型接口 特定功能//Function 函数型接口 特定功能

@Test

public void testFunction(){

//将字符串转成大写

String str1 = strHandler("ghslkajh", (s) -> s.toUpperCase());

System.out.println(str1);

}

// Function 函数型接口

//定义一个处理字符串功能型接口函数

public String strHandler(String str, Function fun){

return fun.apply(str);

}

1.4. 断言型接口Predicate

boolean test(T t); 返回boolean//断言型接口 Predicate

// boolean test(T t); 返回boolean

@Test

public void testPredicate(){

//返回长度大于3的字符串

List s1 = strFilter(Arrays.asList("huzhiqi", "adaad", "1231", "414441", "gagsgasg"), (s) -> s.length() > 3);

System.out.println(s1); //[huzhiqi, adaad, 1231, 414441, gagsgasg]

//返回包含d的字符串

List s2 = strFilter(Arrays.asList("huzhiqi", "adaad", "1231", "414441", "gagsgasg"), (s) -> s.contains("d"));

System.out.println(s2); // [adaad]

}

//使用断言型接口过滤字符串

public List strFilter(List strs, Predicate pred){

List list = new ArrayList<>();

for (String s:strs

) {

//利用断言型接口进行指定功能判断 即一个功能性条件判断

if(pred.test(s)){

//过滤功能

list.add(s);

}

}

return list;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值