美文网首页bigdata
1. java 常见函数接口

1. java 常见函数接口

作者: 百炼 | 来源:发表于2018-12-19 12:26 被阅读0次

date[2018-12-18]

说明

  1. Lambda表达式是一个匿名方法,将行为像数据一样进行传递。
  2. Lambda表达式的常见结构: BinaryOperator<Integer> add = (x, y) -> x + y
  3. 函数接口指仅具有单个抽象方法的接口,用来表示 Lambda表达式的类型。

常见函数接口

使用Consumer接口

package java.util.function;

import java.util.Objects;
@FunctionalInterface
public interface Consumer<T> {
    void accept(T t);

    default Consumer<T> andThen(Consumer<? super T> after) {
        Objects.requireNonNull(after);
        return (T t) -> { accept(t); after.accept(t); };
    }
}

使用Consumer

    Consumer<String> consumer = (s) -> {
        System.out.println("c:" + s);
    };
    forEach(list, consumer);
        
    public static <T> void forEach(List<T> list, Consumer<T> c) {
        for (T t : list) {
            c.accept(t);
        }
    }

Predicate 接口

package java.util.function;

import java.util.Objects;
@FunctionalInterface
public interface Predicate<T> {
    boolean test(T t);

    default Predicate<T> and(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) && other.test(t);
    }

    default Predicate<T> negate() {
        return (t) -> !test(t);
    }

    default Predicate<T> or(Predicate<? super T> other) {
        Objects.requireNonNull(other);
        return (t) -> test(t) || other.test(t);
    }

    static <T> Predicate<T> isEqual(Object targetRef) {
        return (null == targetRef)
                ? Objects::isNull
                : object -> targetRef.equals(object);
    }

    @SuppressWarnings("unchecked")
    static <T> Predicate<T> not(Predicate<? super T> target) {
        Objects.requireNonNull(target);
        return (Predicate<T>)target.negate();
    }
}

使用Predicate

    Predicate<String> moreThan5 = (s) -> s.length() > 5;
    List<String> moreThan5List = filter(list, moreThan5);
    
    public static <T> List<T> filter(List<T> list, Predicate<T> p) {
        List<T> result = new ArrayList<>();
        for (T t : list) {
            if (p.test(t)) {
                result.add(t);
            }
        }
        return result;
    }

Function

package java.util.function;

import java.util.Objects;
@FunctionalInterface
public interface Function<T, R> {
    R apply(T t);
    
    default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
        Objects.requireNonNull(before);
        return (V v) -> apply(before.apply(v));
    }
    
    default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
        Objects.requireNonNull(after);
        return (T t) -> after.apply(apply(t));
    }
    
    static <T> Function<T, T> identity() {
        return t -> t;
    }
}

使用Function

    Function<String, Integer> function = (s) -> {
                return s.length();
            };
        map(list, function).forEach(
                System.out::println
        );
    public static <T, R> List<R> map(List<T> list, Function<T, R> f) {
        List<R> result = new ArrayList<>();
        for (T t : list) {
            result.add(f.apply(t));
        }
        return result;
    }

其它函数接口

1.png

相关文章

  • 1. java 常见函数接口

    date[2018-12-18] 说明 Lambda表达式是一个匿名方法,将行为像数据一样进行传递。 Lambda...

  • Java lambda表达式

    1. Java函数式接口 Java实现函数式编程的方式是函数式接口(functional interface),函...

  • Java 8 Function函数式接口

    Java 8 Function函数式接口 介绍 函数式接口其实就是一个抽象接口类,在Java 8之前已有的函数式接...

  • 2020-07-04【函数式接口】

    函数式接口概述 函数式接口作为方法的参数 函数式接口作为方法的返回值 常见的函数式接口 Supplier接口 Co...

  • 3.JDK1.8特性之函数式接口

    1.什么是函数式接口 2.自定义函数式接口 3.Lambda表达式替代函数式接口做参数使用 4.Java内置四大核...

  • 42 函数式接口

    函数式接口在Java中是有且只有一个抽象方法的接口,java中就是使用Lambda接口作为函数式接口 定义接口格式...

  • java8-Lambda(2)

    在 java.util.function 包中Java 内置了部分函数接口,以下为该函数接口的功能说明。 Java...

  • 函数类型理解

    函数类型的使用 理解成等同java的接口 和接口实现的使用1.定义var receivedTitleSub: ((...

  • Java 函数式接口

    Java 函数式接口 这个术语首先出自于 Java 8。Java 里的函数式接口 指的是一个接口只包含一个抽象方法...

  • Java 8 学习笔记

    1. Java 8 1.1 生态 Lambda 表达式函数式接口方法引用 / 构造器引用Stream API接口中...

网友评论

    本文标题:1. java 常见函数接口

    本文链接:https://www.haomeiwen.com/subject/vozdkqtx.html