メニュー

Java SE11 Gold 勉強すべき内容まとめ【関数型インターフェースとラムダ式】

本記事では、『Oracle Certified Java Programmer, Gold SE 11』の出題範囲、『インターフェースとラムダ式』について、黒本の内容を自分なりに解釈し、まとめていきます

対象者としては、以下の方を想定しています

  • Java SE11 Goldの試験を受ける予定で、クラスとインターフェースの項目の理解を深めたい方
  • Java SE11 Goldの範囲内で、クラスとインターフェースについて、おさらいしたい方

『Java SE8 Gold』の情報が多い中、『Java SE11 Gold』の内容があまり存在しないため、本記事を作成いたしました

また、このような記事を書いているものの、『Java SE11 Gold』取得に向けて勉強している身のため、その点はご容赦ください

目次

BiConsumer

関数型インターフェースのConsumerは、引数を一つしか受け取れないが、『BiConsumer』では引数を二つ受け取ることができ

import java.util.function.BiConsumer;

public class Hoge {
	public static void main(String[] args) {
		BiConsumer<String, Integer> fuga = (a, b) -> System.out.println(a + b);
		fuga.accept("aa", 12);
	}
aa12

複数条件を組み合わせた「Predicate」

『Predicate』には、論理演算子「||」に相当するorメソッド』や、「&&」に相当するandメソッド』が用意されている

orメソッド

import java.util.function.Predicate;

public class Hoge {
	public static void main(String[] args) {
		Predicate<String> fuga = f -> f.equals("fuga");
		Predicate<String> funga = f -> f.equals("funga");

		System.out.println(fuga.or(funga).test("fuga"));		
		System.out.println(fuga.or(funga).test("funga"));
		System.out.println(fuga.or(funga).test("hoge"));
	}
true
true
false

andメソッド

import java.util.function.Predicate;

public class Hoge {
	public static void main(String[] args) {
		Predicate<Integer> fuga = f -> f > 10;
		Predicate<Integer> funga = f -> f < 20;
		
		System.out.println(fuga.and(funga).test(1));
		System.out.println(fuga.and(funga).test(30));
		System.out.println(fuga.and(funga).test(15));
	}
false
false
true

BiPredicate

関数型インターフェースのPredicateは、引数を一つしか受け取れないが、『BiPredicate』では引数を二つ受け取ることができる

import java.util.function.BiPredicate;

public class Hoge {
	public static void main(String[] args) {
		BiPredicate<String, String> fuga = (f, h) -> f.equals(h);

		System.out.println(fuga.test("fuga", "fuga"));		
		System.out.println(fuga.test("fuga", "hoge"));
	}
true
false

BiFunction

関数型インターフェースのFunctionは、引数を一つしか受け取れないが、『BiFunction』では引数を二つ受け取ることができる

import java.util.function.BiFunction;

public class Hoge {
	public static void main(String[] args) {
		BiFunction<Integer, Integer, Boolean> fuga = (f, h) -> f > h;

		System.out.println(fuga.apply(10, 15));
		System.out.println(fuga.apply(15, 10));
	}
false
true

UnaryOperator

関数型インターフェースの『UnaryOperator』は、一つの値を処理して同じ型の結果を戻す処理を定義できる

「Function」との違いは、戻り値の型が引数の型から変更できるかどうか

import java.util.function.BiFunction;

public class Hoge {
	public static void main(String[] args) {
		UnaryOperator<Integer> fuga = x -> ++x;

		System.out.println(fuga.apply(5));
	}
6

BinaryOperator

関数型インターフェースの『BinaryOperator』は、二つの値を処理して同じ型の結果を戻す処理を定義できる

「BiFunction」との違いは、引数の型と戻り値の型が全て同じか全て別々かどうか

import java.util.function.BiFunction;

public class Hoge {
	public static void main(String[] args) {
		BinaryOperator<String> fuga = (f, h) -> f.concat(h);

		System.out.println(fuga.apply("fuga, ", "hoge"));
	}
fuga, hoge

おわりに

自分のアウトプットも兼ねて、Java SE11 Goldの試験で出題される、関数型インターフェースとラムダ式についてまとめました

間違っている点があった場合は、教えてくださると助かります

他の章についてもまとめていきますので、お待ちいただければと思います

created by Rinker
¥4,400 (2023/10/04 13:45:33時点 楽天市場調べ-詳細)
  • URLをコピーしました!

書いた人

1K6畳住み一人暮らし
快適な部屋にするために日々邁進中

目次
閉じる