1. package java_8;
  2. import org.junit.Test;
  3. import java.util.ArrayList;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. import java.util.function.Consumer;
  7. import java.util.function.Predicate;
  8. import java.util.function.Supplier;
  9. import java.util.function.Function;
  10. /**
  11. * Java8内置的四大核心函数式接口
  12. * <p>
  13. * Consumer<T>: 消费型接口
  14. * void accept(T t);
  15. *
  16. * Supplier<T>:供给型接口
  17. * T get();
  18. *
  19. * Function<T, R>: 函数型接口
  20. * R apply(T t);
  21. *
  22. * Predicate<T>: 断言型接口:
  23. * boolean test(T t);
  24. *
  25. *Java8中还提供了其他函数式接口
  26. */
  27. public class TestLambda4 {
  28. //predicate<T> 断言型接口:
  29. @Test
  30. public void test4(){
  31. List<String> list = Arrays.asList("Hello","Lambda","Go","java");
  32. list = filterStr(list, s->s.contains("o"));
  33. list.forEach(System.out::println);
  34. }
  35. //需求:将满足条件的字符串添加到集合中
  36. public List<String> filterStr(List<String> list, Predicate<String> predicate) {
  37. List<String> stringList = new ArrayList<>();
  38. for (String str : list) {
  39. if (predicate.test(str))
  40. stringList.add(str);
  41. }
  42. return stringList;
  43. }
  44. //-----------------------------------------------------------
  45. //Function<T,R>函数型接口
  46. @Test
  47. public void test3() {
  48. String str = strHandler("huangyichun", s -> s.toUpperCase());
  49. System.out.println(str);
  50. }
  51. //需求用于处理字符串
  52. public String strHandler(String str, Function<String, String> fun) {
  53. return fun.apply(str);
  54. }
  55. //-------------------------------------------------
  56. //Supplier<T>供给型接口:
  57. @Test
  58. public void test2() {
  59. List<Integer> list = getNumList(10, () -> (int) (Math.random() * 100));
  60. list.forEach(System.out::println);
  61. }
  62. //需求:产生指定个整数,并放入集合中
  63. public List<Integer> getNumList(int num, Supplier<Integer> sup) {
  64. List<Integer> list = new ArrayList<>();
  65. for (int i = 0; i < num; i++) {
  66. list.add(sup.get());
  67. }
  68. return list;
  69. }
  70. //-----------------------------------------------------------
  71. //Consumer<T> 消费型接口
  72. @Test
  73. public void test1() {
  74. happy(10000, m -> System.out.println(m));
  75. }
  76. public void happy(double money, Consumer<Double> con) {
  77. con.accept(money);
  78. }
  79. }

Java8内置的四大核心函数式接口的更多相关文章

  1. JDK8新特性03 Lambda表达式03_Java8 内置的四大核心函数式接口

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.functio ...

  2. Java8新特性 - Java内置的四大核心函数式接口

    Java内置的四大核心函数式接口 Consumer:消费型接口 对类型为T的对象应用操作,包含方法:void accept(T t) public class TestLambda02 { publi ...

  3. java 8内置的四大核心函数式接口

    Consumer<T> : 消费性接口 返回值  void accept(T t); public void happy(double money, Consumer<Double& ...

  4. java8 四大核心函数式接口Function、Consumer、Supplier、Predicate(转载)

    Function<T, R> T:入参类型,R:出参类型 调用方法:R apply(T t); 定义函数示例:Function<Integer, Integer> func = ...

  5. Java8 内置的函数式接口

    1.Java8 内置的四大核心函数式接口 (1)Consumer<T> : 消费型接口         void accept(T t); (2)Supplier<T> : 供 ...

  6. java8新特性——四大内置核心函数式接口

    在前面几篇简单介绍了一些Lambda表达式得好处与语法,我们知道使用Lambda表达式是需要使用函数式接口得,那么,岂不是在我们开发过程中需要定义许多函数式接口,其实不然,java8其实已经为我们定义 ...

  7. Java8内置的函数式编程接口应用场景和方式

    首先,我们先定义一个函数式编程接口 @FunctionalInterface public interface BooleanFunctionalInterface<T> { boolea ...

  8. Java8新特性_四大内置核心函数式接口

    Consumner : 消费型接口 Supplier :供给型接口 Function:函数式接口 Predicate:断言型接口 其他接口: 四大内置核心函数式接口: Consumner : 消费型接 ...

  9. java8的4大核心函数式接口

    //java8的4大核心函数式接口//1.Consumer<T>:消费性接口//需求:public void happy(double money, Consumer<Double& ...

随机推荐

  1. 利用机器学习进行DNS隐蔽通道检测——数据收集,利用iodine进行DNS隐蔽通道样本收集

    我们在使用机器学习做DNS隐蔽通道检测的过程中,不得不面临样本收集的问题,没办法,机器学习没有样本真是“巧妇难为无米之炊”啊! 本文简单介绍了DNS隐蔽通道传输工具iodine,并介绍如何从iodin ...

  2. 循环引用的weak和assgin

    __weak 当对象销毁后weakSelf指向的地址为nil __unsafe_unretained 挡圈对象销毁后,weakSelf执行的地址为不变,而地址对应对象已经销毁,再次访问该对象就崩溃,相 ...

  3. BZOJ 1806 DP

    思路: f[i][a][b][c][d] 表示在第i天 昨天1矿吃的是a 前天1矿吃的是b 昨天2矿吃的是c 前天2矿吃的是d 的最优解 暴力转移 哦 需要优化一下空间- 变成i%2 就好了 //By ...

  4. caffe下python环境的编译

    安装python所需的依赖包 (1)sudo apt-get install python-numpy python-scipy python-matplotlib ipython ipython-n ...

  5. Windows下Java JDK安装和环境变量配置

    [Java攻城狮学习路线](http://www.cnblogs.com/apollospotatolikett/p/8665123.html 1.JDK下载 下载地址:http://www.orac ...

  6. 1到32 数字正则 还有IP的

    正则是按位解析匹配的,所以[1-32]是不行的. 解析: 1.1-32,包含1位数(1-9)和2位数(10-32) 2.10-32必须切割,10-19和20-29形式一样,得到[12][0-9],30 ...

  7. Array.prototype.slice.call(arguments) 通俗法理解

    Array.prototype.slice.call(arguments,num) 能将具有length属性的对象转成数组.   slice 从字面上的意思可以理解为截取数组的一部分. call 从字 ...

  8. log4j:WARN Please initialize the log4j system properly.解决方案

    在使用quarz任务调度框架时的错误,实际上这个问题很常见,并不影响程序的使用,只是缺少日志输出,完整错误信息: log4j:WARN No appenders could be found for ...

  9. Android7.0打开sdacrd图片问题

    1.点击item,通过intent打开指定路径的图片. 2.测试6.0,5.0正常运行代码: File file=new File(item.address): Intent intent = new ...

  10. JSON是什么?为JavaScript准备的数据格式

    JSON是什么?为JavaScript准备的数据格式 还不了解JSON是什么?看了下面这篇文章,您对JSON是什么应该能够有了一个比较清晰的概念. JSON 即 JavaScript. Object ...