java流式编程(二)方法引用


前言

方法引用使用双冒号 :: 来引用一个方法,可以作为lambda的快捷写法,使得代码更加简洁。

一、静态方法的引用

lambda表达式写法:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Function<Collection<Integer>, Integer> max = a -> Collections.max(a);
Integer value = max.apply(list);
System.out.println(value);

方法引用写法:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
Function<Collection<Integer>, Integer> max = Collections::max;
Integer value = max.apply(list);
System.out.println(value);

即 a -> Collections.max(a);可以改写成Collections::max;

二、实例方法的引用

1.通过对象来引用实例方法

以System.out.println(a);为例

lambda表达式写法:

Consumer<String> lambdaConsumer = a -> System.out.println(a);
lambdaConsumer.accept("hello lambda");

方法引用写法:

Consumer<String> consumer = System.out::println;
consumer.accept("hello lambda");

2.通过类来引用实例方法

以List的add方法为例

lambda表达式写法:

BiFunction<List<String>, String, Boolean> listBiFunction = (a, b) -> a.add(b);
Supplier<List<String>> listSupplier = () -> new ArrayList<>();
Boolean add = listBiFunction.apply(listSupplier.get(), "lambda");	

方法引用写法

BiFunction<List<String>, String, Boolean> listBiFunction = List::add;
Supplier<List<String>> listSupplier = ArrayList::new;
Boolean add = listBiFunction.apply(listSupplier.get(), "lambda");

三、构造方法的引用

以List为例
无参构造 public ArrayList()

Supplier<List<String>> noArgsSupplier = ArrayList::new;
List<String> noArgs = listSupplier.get();

有参构造,初始化大小 public ArrayList(int initialCapacity)

Function<Integer, List<Integer>> intArgsFunction = ArrayList::new;
List<Integer> result = intArgsFunction.apply(10);

有参构造,初始化元素 public ArrayList(Collection<? extends E> c)

List<Integer> integers = Arrays.asList(1, 2, 3);
Function<Collection<Integer>, List<Integer>> collArgsFunction = ArrayList::new;
List<Integer> result = collArgsFunction.apply(integers);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_lrs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值