Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java8の関数と述語の違い


関数型と述語の両方の関数型インターフェースは、Javaで関数型プログラミングを実装するためにJava8で導入されました。

関数インターフェースは変換を行うために使用されます。1つの引数を受け入れて結果を生成できます。一方、述語は1つの引数のみを受け入れることができますが、ブール値のみを返すことができます。状態をテストするために使用されます。

Sr。いいえ。 キー 関数 述語
1
基本
2つの型パラメーターを取ることができます。最初の1つは入力型の引数型を表し、2番目の型は戻り型を表します。
入力型または引数型を表す1つの型パラメーターを取ることができます。
2
リターンタイプ
任意のタイプの値を返すことができます。
ブール値のみを返すことができます
3
メソッド
抽象メソッドapply()があります。
抽象メソッドtest()があります。
4。
ユースケース
条件付きチェックを実装するために使用できます
変換と戻り値に使用できます。

述語の例

public class Main {
   public static void main(String args[]) {
      List<Integer> numList = new ArrayList<>();
      numList.add(5);
      numList.add(10);
      Predicate<Integer> pred = i -> i > 5;
      numList.stream().filter(pred).forEach(i -> System.out.println(i));
   }
}

機能の例

public class Main {
   public static void main(String args[]) {
      List<Integer> numList = new ArrayList<>();
      numList.add(78);
      numList.add(10);
      Function<Integer, Integer> fun = i -> i / 2;
      numList.stream().map(fun).forEach(System.out::println);    
   }
}

  1. Javaでのイテレータと列挙の違い

    IteratorとEnumerationはどちらも、コレクションの要素をトラバースしてアクセスするためのカーソルです。どちらもコレクションフレームワークに属しています。列挙は、コレクションフレームワークのJDK1.2バージョンのJDK1.0およびIteratorで追加されました。 コレクション内の要素への読み取り専用アクセス権があるため、列挙型はコレクション内の構造を変更できません。次の方法があります: * hasMoreElements() * nextElement() 一方、イテレータはコレクション内の要素を読み取って削除できます。以下の方法があります- * hasNe

  2. JavaでのArrayListとHashSetの違い

    HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり