1. 程式人生 > >JAVA基礎程式設計104--函式式介面《下》

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);
  }