JAVA8新特性之函数式接口(三)

LongUnaryOperator:
接受一个参数同为类型long,返回值类型也为long。

   public static void main(String[] args) {
System.out.println("------LongUnaryOperator------");
        LongUnaryOperator longUnaryOperator = (wt)->{
            return (long)wt*100;
        };
        LongUnaryOperator longUnaryOperator1 = (wt)->{
            return (long)wt+10;
        };
        System.out.println("------LongUnaryOperator>>>>"+longUnaryOperator.applyAsLong(1888));
        System.out.println("LongUnaryOperator andThen>>>"+longUnaryOperator.andThen(longUnaryOperator1).applyAsLong(18));
        System.out.println("LongUnaryOperator compose>>>"+longUnaryOperator.compose(longUnaryOperator1).applyAsLong(18));
        System.out.println("LongUnaryOperator identity>>>"+LongUnaryOperator.identity().applyAsLong(18));
        System.out.println("-----LongUnaryOperator------");

    }

输出内容为:

------LongUnaryOperator------
------LongUnaryOperator>>>>188800
LongUnaryOperator andThen>>>1810
LongUnaryOperator compose>>>2800
LongUnaryOperator identity>>>18
LongUnaryOperator------

ObjDoubleConsumer:
接受一个object类型和一个double类型的输入参数,无返回值。

   public static void main(String[] args) {
       System.out.println("-----ObjDoubleConsumer------");
        Map<String,Double> map = new HashMap<String,Double>();
        ObjDoubleConsumer objDoubleConsumer=(wy,wu)->{
            map.put(String.valueOf(wy),wu);
            System.out.println("ObjDoubleConsumer>>>>"+map.get(wy));
        };
        objDoubleConsumer.accept("111111",10.5);
        System.out.println("-----ObjDoubleConsumer------");
    }

输出内容为:

-----ObjDoubleConsumer------
ObjDoubleConsumer>>>>10.5
-----ObjDoubleConsumer------

ObjIntConsumer:
接受一个object类型和一个int类型的输入参数,无返回值。

   public static void main(String[] args) {
       System.out.println("-----ObjIntConsumer------");
        ObjIntConsumer objIntConsumer = (wi,wo)->{
            System.out.println("ObjIntConsumer>>>>"+wi+"||wi class:"+wi.getClass().toString());
            System.out.println("ObjIntConsumer>>>>"+wo+"||wi class"+wo);
        };
        List list = new ArrayList();
        list.add("1");
        objIntConsumer.accept(list,80);
        System.out.println("-----ObjIntConsumer------");
    }

输出内容为:

-----ObjIntConsumer------
ObjIntConsumer>>>>[1]||wi classclass java.util.ArrayList
ObjIntConsumer>>>>80||wi class80
-----ObjIntConsumer------

ObjLongConsumer:
接受一个object类型和一个long类型的输入参数,无返回值。

   public static void main(String[] args) {
       System.out.println("-----ObjLongConsumer------");
        ObjLongConsumer objLongConsumer = (wp,wa)->{
            System.out.println("objLongConsumer>>>>"+wp+"||wi class:"+wp.getClass().toString());
            System.out.println("objLongConsumer>>>>"+wa+"||wi class"+wa);
        };
        Map map1 = new HashMap();
        map1.put("1","1111");
        objLongConsumer.accept(map1,1000);
        System.out.println("-----ObjLongConsumer------");
    }

输出内容为:

-----ObjLongConsumer------
objLongConsumer>>>>{1=1111}||wi class:class java.util.HashMap
objLongConsumer>>>>1000||wi class1000
-----ObjLongConsumer------

Predicate:
接受一个输入参数,返回一个布尔值结果。

  public static void main(String[] args) {
      System.out.println("-----Predicate------");
       Map map2 = new HashMap();
       map2.put("1","1111");
       Predicate predicate=ws->{
           System.out.println("Step 1");
           if(map2.get("1").equals(ws)){
              return false;
           }else{
               return true;
           }
       };
       Predicate predicate1=wd->{
           System.out.println("Step 2");
           if (wd.equals("2")){
               return false;
           }else {
               return true;
           }
       };
       System.out.println("Predicate>>>>"+ predicate.test(2222));
       System.out.println("Predicate negate >>>>"+ predicate.negate().test(2222));
       System.out.println("Predicate and >>>>"+ predicate.and(predicate1).test(222));
       System.out.println("Predicate or >>>>"+ predicate.or(predicate1).test(22));
       System.out.println("-----Predicate------");
   }

输出内容为:

-----Predicate------
Step 1
Predicate>>>>true
Step 1
Predicate negate >>>>false
Step 1
Step 2
Predicate and >>>>true
Step 1
Predicate or >>>>true
-----Predicate------

Supplier:
无参数,返回一个结果。

  public static void main(String[] args) {
            System.out.println("-----Supplier------");
       Supplier supplier = ()->{
           Map map3 = new HashMap();
           map3.put("1","张三");
           return map3;
       };
       System.out.println(" Supplier >>>>"+supplier.get());
       System.out.println("-----Supplier------");
   }

输出内容为:

-----Supplier------
 Supplier >>>>{1=张三}
-----Supplier------

ToDoubleBiFunction:
接受两个输入参数,返回一个double类型结果

  public static void main(String[] args) {
       System.out.println("-----ToDoubleBiFunction------");
       List list1 = new ArrayList();
       list1.add(180.0);
       Map map4 = new HashMap();
       map4.put("a",2000.0);
       ToDoubleBiFunction toDoubleBiFunction=(wf,wg)->{
           return ((double)(((ArrayList)wf).get(0)))+((double)(((HashMap)wg).get("a")));
       };
       System.out.println("ToDoubleBiFunction >>>>>>"+toDoubleBiFunction.applyAsDouble(list1,map4));
       System.out.println("-----ToDoubleBiFunction------");
   }

输出内容为:

-----ToDoubleBiFunction------
ToDoubleBiFunction >>>>>>2180.0
-----ToDoubleBiFunction------

ToIntBiFunction:
接受两个输入参数,返回一个int类型结果。

  public static void main(String[] args) {
      System.out.println("-----ToIntBiFunction------");
       List list2 = new ArrayList();
       list2.add(1800);
       Map map5 = new HashMap();
       map5.put("a",20000);
       ToIntBiFunction toIntBiFunction=(wf,wg)->{
           return ((int)(((ArrayList)wf).get(0)))+((int)(((HashMap)wg).get("a")));
       };
       System.out.println("ToIntBiFunction >>>>>>"+toIntBiFunction.applyAsInt(list2,map5));
       System.out.println("-----ToIntBiFunction------");
   }

输出内容为:

-----ToIntBiFunction------
ToIntBiFunction >>>>>>21800
-----ToIntBiFunction------

ToIntFunction:

  public static void main(String[] args) {
     System.out.println("-----ToIntFunction------");
       Hashtable hashtable = new Hashtable();
       hashtable.put("888",888);
       ToIntFunction toIntFunction = wh->{
           return (int)((Hashtable)(wh)).get("888");
       };
       System.out.println("ToIntFunction >>>>>>"+toIntFunction.applyAsInt(hashtable));
       System.out.println("-----ToIntFunction------");
   }

输出内容为:

-----ToIntFunction------
ToIntFunction >>>>>>888
-----ToIntFunction------

ToLongBiFunction:
接受两个输入参数,返回一个long类型结果。

  public static void main(String[] args) {
       System.out.println("-----ToLongBiFunction------");
       List list3 = new ArrayList();
       list3.add(1800);
       Map map6 = new HashMap();
       map6.put("a",20000);
       ToLongBiFunction longBiFunction = (wj,wk)->{
           long t1 = 0;
           long t2 = 0;
           if (wj instanceof ArrayList){
               t1 = (long)((ArrayList) wj).get(0);
           }else if (wk instanceof HashMap){
               t2 = (long)((HashMap) wk).get("a");
           }
           return t1+t2;
       };
       System.out.println("ToLongBiFunction >>>>>>"+toIntBiFunction.applyAsInt(list3,map6));
       System.out.println("-----ToLongBiFunction------");
   }

输出内容为:

-----ToLongBiFunction------
ToLongBiFunction >>>>>>21800
-----ToLongBiFunction------

ToLongFunction:
接受一个输入参数,返回一个long类型结果。

  public static void main(String[] args) {
      System.out.println("-----ToLongFunction------");
       ToLongFunction toLongFunction = wl->{
           long t1 = 0;
           if (wl instanceof ArrayList){
               t1 = (long)((int)(((ArrayList) wl).get(0)));
           }else if (wl instanceof HashMap){
               t1 = (long)((int)((HashMap) wl).get("a"));
           }
           return t1;
       };
       System.out.println("ToLongFunction list3 >>>>>>"+toLongFunction.applyAsLong(list3));
       System.out.println("ToLongFunction  map6 >>>>>>"+toLongFunction.applyAsLong(map6));
       System.out.println("-----ToLongFunction------");
   }

输出内容为:

-----ToLongFunction------
ToLongFunction list3 >>>>>>1800
ToLongFunction  map6 >>>>>>20000
-----ToLongFunction------

UnaryOperator:
接受一个参数为类型T,返回值类型也为T。

 public static void main(String[] args) {
 System.out.println("-----UnaryOperator------");
      List<String> list4 = new ArrayList<>();
      list4.add("1");
      list4.add("2");
      List<String> list5 = (ArrayList)(UnaryOperator.identity().apply(list4));
      list5.stream().forEach(wx->System.out.println(">>>>>"+wx));
      System.out.println("-----UnaryOperator------");
  }

输出内容为:

-----UnaryOperator------
>>>>>1
>>>>>2
-----UnaryOperator------
发布了62 篇原创文章 · 获赞 8 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/system_obj/article/details/88984367