java函数式编程:四大Function

java函数式编程:四大Functionjava util function 包下的四大 Function1 Consumer 消费者 publicinterf T voidaccept Tt 从名字可以看出 消费者是来消费的 它接受一个数据 没有任何返回值 简单使用 比如我们只想打印列表中的每个元素 这里的 forEach Consumer 里面接受的参数就是一个 C T

java.util.function包下的四大Function

函数式编程为jdk1.8新特性,学习好利用好,编程变得更加美好~

1. Consumer 消费者

public interface Consumer<T> { 
    void accept(T t); } 

从名字可以看出,消费者是来消费的,它接受一个数据,没有任何返回值。

简单使用:比如我们只想打印列表中的每个元素,这里的forEach(Consumer)里面接受的参数就是一个Consumer

 List<Object> objects = Arrays.asList("a", "b", "c"); objects.stream().forEach(s -> System.out.println(s)); 

Comsumer家族成员

1. 一次消费两个数据 public interface BiConsumer<T, U> { 
    void accept(T t, U u); } 2. 消费一个Double类型的数据 public interface DoubleConsumer { 
    void accept(double value); } 3. 消费一个int数据 public interface IntConsumer { 
    void accept(int value); } 4. 消费一个Long数据 public interface LongConsumer { 
    void accept(long value); } 5. 消费两个数据,其中一个为Double类型 public interface ObjDoubleConsumer<T> { 
    void accept(T t, double value); } 6. 消费两个数据,其中一个为Int类型 public interface ObjIntConsumer<T> { 
    void accept(T t, int value); } 7. 消费两个数据,其中一个为Long类型 public interface ObjLongConsumer<T> { 
    void accept(T t, long value); } 

2. Function 转换器

public interface Function<T, R> { 
    R apply(T t); } 
List<Object> objects = Arrays.asList("a", "b", "c"); objects.stream().map(t -> { 
   return t + " hello";}).forEach(System.out::println); 

Function家族

1. 接受两个数据,返回一个结果 public interface BiFunction<T, U, R> { 
    R apply(T t, U u); } 2. 接受一个double类型数据,返回一个结果 public interface DoubleFunction<R> { 
    R apply(double value); } 3. 接受一个double类型,返回一个int类型数据 public interface DoubleToIntFunction { 
    int applyAsInt(double value); } 4. 接受一个double,返回一个long类型 public interface DoubleToLongFunction { 
    long applyAsLong(double value); } 5. 接受一个int,返回一个结果 public interface IntFunction<R> { 
    R apply(int value); } 6. 还有IntToDoubleFunction, IntToLongFunction, LongFunction, LongToDoubleFunction, LongToIntFunction, ToDoubleBiFunction, ToDoubleFunction, ToDoubleFunction, ToIntBiFunction, ToIntFunction, ToLongBiFunction, ToLongFunction等,根据名字很容易理解其作用,不一一贴上源码。 

3. Predicate 裁判

public interface Predicate<T> { 
    boolean test(T t); } 
List<Object> objects = Arrays.asList("a", "b", "c"); objects.stream().filter(s -> { 
    return s.equals("a"); }).forEach(System.out::println); 

Predicate家族

1. 接受两个参数,返回true or false public interface BiPredicate<T, U> { 
    boolean test(T t, U u); } 2. 接受一个double,返回true or false public interface DoublePredicate { 
    boolean test(double value); } 3. 接受一个int,返回true or false public interface IntPredicate { 
    boolean test(int value); } 4. 接受一个Long,返回true or false public interface LongPredicate { 
    boolean test(long value); } 

4. Supplier 供应商

public interface Supplier<T> { 
    T get(); } 
Supplier<String> supplier = new Supplier<String>() { 
    @Override public String get() { 
    return "hello world"; } }; String s = supplier.get(); System.out.println(s); 

Supplier家族

1. 返回booleanpublic interface BooleanSupplier { 
    boolean getAsBoolean(); } 2. 返回double public interface DoubleSupplier { 
    double getAsDouble(); } 3. 返回int public interface IntSupplier { 
    int getAsInt(); } 4. 返回long public interface LongSupplier { 
    long getAsLong(); } 

总结:1.8新增的函数式接口在Stream流中有众多应用,后续将继续学习Stream流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232877.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号