- java8四大内置函数
- consumer<T>: 消费型接口
- void accept(T t)
- 示例:
-
public static void main(String[] args) { use(1000, (m) -> System.out.println("本此消费了" + m + "元")); } /** * @Description: 消费型接口 * @Param: [money, consumer] * @return: void * @Author: 单人影 * @Date: 2019/12/8 0008 20:22 */ public static void use(Integer money, Consumer<Integer> consumer) { consumer.accept(money); }
-
- supplier<T>: 供给型接口
- T get()
- 示例:
-
public static void main(String[] args) { List<Integer> list = getList(10, () -> (int) Math.random() + 10000); for (Integer integer : list) { System.out.println(integer); } } /** * @Description: 供给型接口 返回指定的整数,返回集合 * @Param: [num, sup] * @return: java.util.List<java.lang.Integer>1 * @Author: 单人影 * @Date: 2019/12/8 0008 20:27 */ public static List<Integer> getList(int num, Supplier<Integer> sup) { List<Integer> list = new ArrayList(); for (int i = 0; i < num; i++) { System.out.println(sup.get()); list.add(sup.get()); } return list; }
-
- function<T, R>: 函数型接口
- R apply(T t)
-
public static void main(String[] args) { String s = strHandler(" hello world ", (str) -> str.trim()); System.out.println(s); } /** * @Description: 用于处理字符串 * @Param: [string, function] * @return: java.lang.String * @Author: 单人影 * @Date: 2019/12/8 0008 20:50 */ public static String strHandler(String string, Function<String,String> function){ return function.apply(string); }
-
- R apply(T t)
- predicate<T>: 断言型接口
- boolean test(T t)
-
public static void main(String[] args) { List<String> list = Arrays.asList("hello1", "world","aaa","bbb","a"); List<String> list1 = filterString(list, (x) -> x.length() > 3); for (String s : list1) { System.out.println(s); } } public static List<String> filterString(List<String> list, Predicate<String> predicate) { List<String> arrayList = new ArrayList(); for (String string : list) { if (predicate.test(string)) { arrayList.add(string); } } return arrayList; }
-
- boolean test(T t)
- consumer<T>: 消费型接口
- 方法引用:
- 若lambda体中的内容有方法已经实现了,我们可以使用"方法引用".
- 注意:
- lambda体重调用方法的参数列表与返回值类型 要与函数式接口中抽象方法的函数列表和返回值类型保持一致.
- 注意:
- 有三种语法格式:
- 对象::实力方法名 类::静态方法名
-
public static void main(String[] args) { Consumer<String> consumer = (x) -> System.out.println(x); //可以写成下面这种写法 PrintStream printStream = System.out; Consumer<String> consumer1 = printStream::println; //需要实现接口的参数列表和返回值类型和lambda表达式的参数列表和返回值一致 LoginRequest loginRequest = new LoginRequest(); loginRequest.setUserName("123456"); Supplier<String> supplier = ()->loginRequest.getUserName(); System.out.println(supplier.get()); Supplier<String> supplier1 = loginRequest::getUserName; System.out.println(supplier1.get()); }
-
- 类::实例方法名
-
public static void main(String[] args) { BiPredicate<String, String> biPredicate = (x, y) -> x.equals(y); BiPredicate<String, String> biPredicate2 = String::equals; }
-
- 对象::实力方法名 类::静态方法名
- 若lambda体中的内容有方法已经实现了,我们可以使用"方法引用".
- 构造器引用:
-
注意:需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表保持一致.
-
public static void main(String[] args) { Supplier<LoginRequest> supplier = () -> new LoginRequest(); LoginRequest loginRequest = supplier.get(); Supplier<LoginRequest> supplier2 = LoginRequest::new; }
-
-
数组引用:
-
Type::new
-
public static void main(String[] args) { Function<Integer,String[]> function = (x)->new String[x]; String[] apply = function.apply(10); System.out.println(apply.length); Function<Integer,String[]> function2 = String[]::new; String[] apply1 = function2.apply(20); System.out.println(apply1.length); }
-
java 1.8 lambda表达式2
最新推荐文章于 2022-09-15 16:02:30 发布