Java8で追加された関数型のメモ(いまさら)

今更だけど、Java8の関数型インターフェースのメモ

Consumer

引数1つ受け取って、結果を返却しない関数インターフェース

public class ConsumerSample<T> {

    public static void main(String[] args) {
        Consumer<String> consumer1 = string -> System.out.println("consumer1: " + string);
        consumer1.accept("sample");

        Consumer<String> consumer2 = string -> System.out.println("consumer2: " + string);
        Consumer<String> sumConsumer = consumer1.andThen(consumer2);
        sumConsumer.accept("Hello Consumer!");
    }
}

accept(T t)

引数で設定されたオペレーションを実行する

andThen(Consumer<? super T> after)

Consumerをつなげて、合成Consumerを返却する

Supplier

public class SupplierSample {
    public static void main(String[] args) {

        Supplier<String> supplier = () -> "hoge";
        System.out.println(supplier.get());
    }
}

get()

ジェネリクスで指定した型が結果として返却される

Predicate

真偽値を返却する関数インターフェース

public class PredicateSample {
    public static void main(String[] args) {

        // test
        Predicate<String> predicate = string -> string.isEmpty();
        System.out.println(predicate.test(""));
        System.out.println(predicate.test("test"));

        // nagate  (結果はtestの反対になる)
        Predicate<String> predicateNegate = predicate.negate();
        System.out.println(predicateNegate.test(""));
        System.out.println(predicateNegate.test("test"));

        // and
        Predicate<String> predicateContains = string -> string.contains("c");
        Predicate<String> predicateStart = string -> string.startsWith("a");
        Predicate<String> and = predicateContains.and(predicateStart);
        System.out.println(and.test("cab"));
        System.out.println(and.test("abc"));

    }
}

test(T t)

設定したPredicateを検証する

nagate()

Predicateの否定したインスタンスを返却する

and(Predicate<? super T>)

設定したPredicateを合成する

BiConsumer,BiSupplier,BiPredicate

上3つの引数2つ版

このエントリーをはてなブックマークに追加

Leave a Reply

Your email address will not be published. Required fields are marked *