加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java8之Consumer、Supplier、Predicate和Function攻略

发布时间:2019-08-06 11:04:04 所属栏目:建站 来源:Java星星
导读:副标题#e# 来聊聊Consumer、Supplier、Predicate、Function这几个接口的用法,在 Java8 的用法当中,这几个接口虽然没有明目张胆的使用,但是,却是润物细无声的。为什么这么说呢? 这几个接口都在 java.util.function 包下的,分别是Consumer(消费型)、s

4.1 Function 接口实例

  1. /** 
  2.  * Function测试,function的作用是转换,将一个值转为另外一个值 
  3.  */ 
  4.  @Test 
  5.  public void test_Function() { 
  6.  //① 使用map方法,泛型的第一个参数是转换前的类型,第二个是转化后的类型 
  7.  Function<String, Integer> function = new Function<String, Integer>() { 
  8.  @Override 
  9.  public Integer apply(String s) { 
  10.  return s.length();//获取每个字符串的长度,并且返回 
  11.  } 
  12.  }; 
  13.  Stream<String> stream = Stream.of("aaa", "bbbbb", "ccccccv"); 
  14.  Stream<Integer> stream1 = stream.map(function); 
  15.  stream1.forEach(System.out::println); 
  16.  System.out.println("********************"); 
  17.  } 

输出结果

Java8之Consumer、Supplier、Predicate和Function攻略,建议收藏

4.2 代码分析

① Function 接口分析

  1. //① 使用map方法,泛型的第一个参数是转换前的类型,第二个是转化后的类型 
  2.  Function<String, Integer> function = new Function<String, Integer>() { 
  3.  @Override 
  4.  public Integer apply(String s) { 
  5.  return s.length();//获取每个字符串的长度,并且返回 
  6.  } 
  7.  }; 

这段代码创建了一个 Function 接口对象,实现了一个 apply 方法,这个方法有一个输入参数和一个输出参数。其中,泛型的第一个参数是转换前的类型,第二个是转化后的类型。

在上面的代码中,就是获取字符串的长度,然后将每个字符串的长度作为返回值返回。

② 重要应用 map 方法

  1. Stream<String> stream = Stream.of("aaa", "bbbbb", "ccccccv"); 
  2.  Stream<Integer> stream1 = stream.map(function); 
  3.  stream1.forEach(System.out::println); 

在 Function 接口的重要应用不得不说 Stream 类的 map 方法了,map 方法传入一个 Function 接口,返回一个转换后的 Stream类。

4.3 其他 Function 接口

除了上面使用的 Function 接口,还可以使用下面这些 Function 接口。 IntFunction 、DoubleFunction 、LongFunction 、ToIntFunction 、ToDoubleFunction 、DoubleToIntFunction 等等,使用方法和上面一样。

4.4 Function 接口总结

① Function 接口是一个功能型接口,是一个转换数据的作用。 ② Function 接口实现 apply 方法来做转换。

5 总结

通过前面的介绍,已经对Consumer、Supplier、Predicate、Function这几个接口有详细的了解了,其实,这几个接口并不是很难,只是有点抽象,多加理解会发现很简单,并且特别好用!

(编辑:西安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读