JAVA基础编程104——函数式接口《下》

函数式接口使用案例

一、Runnable

   /**
    * 1、Runnable :线程激活接口
    *    A、void run()
    *    多线程用junit5.0进行单元测试
    */
  @Test
  public void test1() {
      startThread(() ->
          System.out.println(Thread.currentThread().getName() + "-->线程启动...")
      );
  }
  //调用该方法启动一个线程
  public void startThread(Runnable run) {
      new Thread(run).start();
  }
  

二、Comparator

  /**
    * 2、Comparator: 比较器
    *    A、int compare(T o1, T o2)
    *    
    */
   @Test
   public void test2() {
       String[] arr = {"bb", "a", "ccccc", "ddd", "aaaa"};
       Arrays.sort(arr, getComparator());
       System.out.println(Arrays.toString(arr));

   }
   //调用该方法实现数组倒序排序
   public Comparator<String> getComparator() {
       return (o1, o2) -> o2.length() - o1.length();
   }

三、Supplier

   /**
    * 3、Supplier: 消费型接口
    *    A、T get()
    *    JDK1.8内置核心函数接口
    */
   @Test
   public void test3() {
       getConsumer(100, (x) -> System.out.println(100));
   }
   
  //调用该方法实现对元素的消费
   public void getConsumer(double a, Consumer<Double> b) {
       b.accept(a);
   }
   

四、Consumer

 /**
    * 4、Consumer: 生产型接口
    *    A、void accept(T t)
    *    JDK1.8内置核心函数接口
    */
   @Test
   public void test4() {
       Random r = new Random();
       int[] arr = getSupplier(10, () -> r.nextInt(100)+1);
       System.out.println(Arrays.toString(arr));
   }
   
  //调用该方法随机生成指定长度数组
   public int[] getSupplier(int sum, Supplier<Integer> sup) {
       int[] arr = new int[sum];
       for (int i = 0; i < sum; i++) {
           arr[i] = sup.get();
       }
       return  arr;
   }


五、Predicate

  /**
    * 5、predicate:判断型接口/断言接口
    *   A、boolean test(T t)
    *   JDK1.8内置核心函数接口
    */
   @Test
   public void test5(){
       List<Integer> l = List.of(100,78,65,67,98,53,76,23,65);
       List<Integer> list = getpredicate(l, x ->x > 60);
       list.forEach(x-> System.out.println(x));

   }
  //调用该方法实现对数组筛选
   public List<Integer> getpredicate(List<Integer> list, Predicate<Integer> p){
       List<Integer> l = new ArrayList<>();
       for (Integer integer : list) {
           if(p.test(integer)) {
               l.add(integer);
           }
       }
       return l;
   }
   
   

六、Function

  /**
   * 6、Function:  功能型接口
   *    A、R apply(T t)
   *    JDK1.8内置核心函数接口
   */
  @Test
  public void test6(){
      String str = " sadhfkasdf ";
      //字符串截取
      String str1 = getFuntion(str, s -> s.substring(2, 4));
      System.out.println(str1);
      //字符串去空格
      String str2 = getFuntion(str, s -> s.trim());
      System.out.println(str2);

  }
  //调用该方法实现对字符串的处理
  public String getFuntion(String str, Function<String,String> fun){
      return fun.apply(str);
  }


猜你喜欢

转载自blog.csdn.net/mollen/article/details/82683621