java jdk 1.8特性_Java JDK1.8新特性之四大函数式接口

JDK 1.8的一些新特性

四大核心函数式接口(Consumer、Predicate、Supplier、Function),结合lambda表达式

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.function.Function;

import java.util.function.Predicate;

import java.util.function.Supplier;

public class JDk18Demo {

public static void main(String[] args) {

// foreach();

// function();

supplier();

predicate();

}

/**

* Predicate接口:断言接口,断言可理解为测试的意思

* 测试给定字符串列表中哪些字符串包含小写字母m

*/

private static void predicate() {

List list = Arrays.asList("Mikey", "Lily", "Jimy", "Tom");

// 有没有参数取决于接口中的方法有没有参数 boolean test(T t);

List results = filter(list, (str) -> str.contains("m"));

results.forEach(System.out::println);

}

private static List filter(List list, Predicate p) {

List results = new ArrayList<>();

for (String str : list) {

if (p.test(str)) {// 测试是否符合要求

results.add(str);

}

}

return results;

}

/**

* Supplier接口:代表结果供应商

*/

private static void supplier() {

List list = getNums(10, () -> (int) (Math.random() * 100));

list.forEach(System.out::println);

}

// 获取num个随机数,由调用者给出具体实现

private static List getNums(int num, Supplier sup) {

List list = new ArrayList<>();

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

list.add(sup.get());

}

return list;

}

/**

* Function接口:表示接收一个参数并产生结果的函数

*/

private static void function() {

String s = strToUpp("lowercase", (str) -> str.toUpperCase());

System.out.println(s);

}

// 将给定字符串转为大写,由调用者给出具体实现

private static String strToUpp(String str, Function f) {

return f.apply(str);

}

/**

* Consumer接口:消费者接口

* jdk 1.8中的新的迭代方法

*/

private static void foreach() {

List list = new ArrayList<>();

list.add("Tom");

list.add("Mikey");

list.add("Lily");

list.forEach((String s) -> {

System.out.println(s);

});

// 只有一行代码,可简写为

list.forEach(s -> System.out.println(s));

// 进一步可用新语法写为

list.forEach(System.out::println);

}

}

原文:https://www.cnblogs.com/zxfei/p/10904603.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值