java8内置函数式接口
来源:互联网 发布:淘宝卖空军一号真的吗 编辑:程序博客网 时间:2024/06/13 05:41
java8内置函数式接口
jdk1.8 api 包括许多内置函数式接口。一些是从原有API升级,如Comparator、Runnable等。这些接口被扩展支持lambda表达式,通过增加@FunctionalInterface
注解。
同时java8也提供了丰富的函数式接口,其中一些接口是来自知名的Google Guava库。下面选择一些常用接口进行说明。
Predicates
Predicates是包含一个参数的布尔值接口。其包括一些缺省方法,组合他们使用可以实现复杂的业务逻辑(如:and, or, negate)。示例代码如下:
Predicate<String> predicate = (s) -> s.length() > 0; predicate.test("foo"); // truepredicate.negate().test("foo"); // false Predicate<Boolean> nonNull = Objects::nonNull;Predicate<Boolean> isNull = Objects::isNull; Predicate<String> isEmpty = String::isEmpty;Predicate<String> isNotEmpty = isEmpty.negate();
Functions
Functions接口接收一个参数并产生一个结果。其缺省方法通常被用来链接多个功能一起使用 (compose, andThen)。
Function<String, Integer> toInteger = Integer::valueOf;Function<String, String> backToString = toInteger.andThen(String::valueOf); backToString.apply("123"); // "123"
Suppliers
Suppliers接口生成一个给定类型结果。和Functions不同,其没有接收参数。
Supplier<Person> personSupplier = Person::new;personSupplier.get(); // new Person
Consumers
Consumers表现执行带有单个输入参数的操作。
Consumer<Person> greeter = (p) -> System.out.println("Hello, " + p.firstName);greeter.accept(new Person("Luke", "Skywalker"));
Comparators
Comparators是从java旧版本升级并增加了一些缺省方法。
Comparator<Person> comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName); Person p1 = new Person("John", "Doe");Person p2 = new Person("Alice", "Wonderland"); comparator.compare(p1, p2); // > 0comparator.reversed().compare(p1, p2); // < 0
1 0
- java8内置函数式接口
- Java8内置函数式接口
- java8的内置函数式接口总结
- Java8中内置的四大核心函数式接口
- Java8新特性_四大内置核心函数式接口
- Java8新特性(内置的核心函数式接口)
- Java8内置4大函数式接口详解
- Java8:函数式接口
- JAVA8 函数式接口介绍
- Java8之函数式接口
- java8内置四大函数
- java8提供的简单函数式接口
- java8 四个核心函数式接口
- java8:@FunctionalInterface函数式接口注解
- Java8新特性函数式接口
- Java8中的函数式接口及使用
- Java8的四大核心函数式接口
- java8 函数式接口(FunctionalInterface) [一]
- 【bzoj1010】玩具装箱toy 斜率优化dp
- 使用文件输出hello
- java之yield(),sleep(),wait()区别详解-备忘笔记
- hbase集群搭建
- JZOJ4893【NOIP2016提高A组集训第15场11.14】过河
- java8内置函数式接口
- PTA 4-3 二叉树的遍历
- web服务端和游戏服务端的区别
- 一道简单的推理题(日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个)
- 第四课(MySQL基础知识)
- CCF201403-3命令行选项JAVA
- 你真的会写单例模式吗-------Java实现
- 阿里云ubuntu下mysql远程连接失败解决方法
- OpenGL(十一) BMP真彩文件的显示和复制操作