设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

Java8之Consumer、Supplier、Predicate和Function攻略(4)

发布时间:2019-08-05 12:06 所属栏目:21 来源:Java星星
导读:这段代码,首先创建一个 Predicate 对象,然后实现 test 方法,在 test 方法中做一个判断:如果传入的参数大于 5 ,就返回 true,否则返回 false; StreamIntegerstream=Stream.of(1,23,3,4,5,56,6,6); ListInteger

这段代码,首先创建一个 Predicate 对象,然后实现 test 方法,在 test 方法中做一个判断:如果传入的参数大于 5 ,就返回 true,否则返回 false;

  1. Stream<Integer> stream = Stream.of(1, 23, 3, 4, 5, 56, 6, 6); 
  2.  List<Integer> list = stream.filter(predicate).collect(Collectors.toList()); 
  3.  list.forEach(System.out::println); 

这段代码调用 Stream 的 filter 方法,filter 方法需要的参数就是 Predicate 接口,所以在这里只要大于 5 的数据就会输出。

3.4 Predicate 接口总结

① Predicate 是一个谓词型接口,其实只是起到一个判断作用。 ② Predicate 通过实现一个 test 方法做判断。

4 Function 接口

Function 接口是一个功能型接口,它的一个作用就是转换作用,将输入数据转换成另一种形式的输出数据。

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这几个接口有详细的了解了,其实,这几个接口并不是很难,只是有点抽象,多加理解会发现很简单,并且特别好用!

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读