Omówienie interfejsów BiConsumer, BiFunction, BinaryOperator #4

W Java 8 istnieje pokaźna grupa interfejsów funkcjonalnych, które pokrótce będziemy omawiać. Warto zapoznać się ze wszystkimi i wiedzieć, że takie istnieją. Okazuje się, że odpowiadają one na niemalże wszystkie potrzeby programistów i tworzenie swoich interfesjów może być zbędne.

Zacznijmy więc, bo długa droga przed nami 😉 Dzisiaj pierwsza część serii artykułów opisująca interfejsy: BiConsumer<T,U>, BiFunction<T,U,R>, BinaryOperator<T>

1. BiConsumer<T,U>

Na początek zajmiemy się tym interfejsem, który posiada także metodę default:

Metoda accpet nic nie zwraca, ale przyjmuje dwa argumenty, na których możemy wykonać operacje. Obiektem oczywiście może być cokolwiek, w naszym przypadku będzie to Double:

Wynik:

Metoda andThen służy do wykonania operacji na kilku obiektach typu BiConsumer. Może to wyglądać tak:

Wynik:

 

2. BiFunction<T,U,R>

Różnica z poprzednim interfejsem jest taka, że tym razem otrzymujemy zwrócony wynik:

Wynik:

W metodzie andThen możemy przekazać obiekt typu Function, który dodatkowo przetwarza nam wynik naszej lambdy z interfejsu BiFunction. Liczby zostaną dodane za pomocą naszej lambdy, którą zdefiniowaliśmy wyżej, a potem jeszcze zostanie dodana do ich liczba PI.

Wynik:

 

3. BinaryOperator<T>

BinaryOperator rozszerza interfejs BiFunction, który jest przedstawiony wyżej. Działanie tych interfejsów jest prawie takie same, z małą różnicą. BinaryOperator działa tylko na jednym i takim samym typie. BinaryOperator dodatkowo posiada dwie metody default minBy oraz maxBy.

Na początek metoda apply:

Wynik:

Jeżeli chcemy użyć metody minBy musimy zdefiniować Comparator. W tym przypadku użyjemy Comparator, który kryje się w klasie Integer.

Wynik:

Podobna sytuacja z maxBy:

 

5 thoughts on “Omówienie interfejsów BiConsumer, BiFunction, BinaryOperator #4

  1. Pingback: Omówienie interfejsów Consumer, Function, UnaryOperator #4 – Zacznij Programować – To proste, ale musisz zacząć, a ta strona Ci w tym pomoże :)

  2. Pingback: Omówienie interfejsów Consumer, Function, UnaryOperator #7 – Zacznij Programować – To proste, ale musisz zacząć, a ta strona Ci w tym pomoże :)

  3. Pingback: Pozostałe interfejsy funkcjonalne – Zacznij Programować – To proste, ale musisz zacząć, a ta strona Ci w tym pomoże :)

  4. Pingback: Implementujemy własny Collector #19 – Zacznij Programować – To proste, ale musisz zacząć, a ta strona Ci w tym pomoże :)

  5. Marek

    Jest błąd w tym fragmenie kodu. Najpierw mamy biConsumer a potem biconsumerToString.accept

    BiConsumer biConsumer = (x, y) -> {
    System.out.println(„Dodawanie: ” + (x + y));
    };

    biConsumerToString.accept(1.0, 2.0);

    Reply

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *