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

Java 9のOptional.ifPresentOrElse()メソッドとOptional.or()メソッドの違いは?


両方のOptional.ifPresentOrElse() およびOptional.or() Java 9バージョンでは、機能を向上させるためのメソッドが導入されています。 Optional.ifPresentOrElse() メソッドは、値が存在するかどうかを確認し、値を指定してアクションを適用します。それ以外の場合は、空のアクションを返しますが、オプション.or() メソッドは、値が存在するかどうかをチェックします。returnオプションには値が含まれます。それ以外の場合、returnOptionalはSupplier関数に適用されます。 Optional.ifPresentOrElse() メソッドには、コンシューマーという2つのパラメーターが含まれています および実行可能 一方、オプション.or() メソッドには、サプライヤーという1つのパラメーターのみが含まれています 。

Optional.ifPresentOrElse()の構文:
public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction)

import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger;

public class IfPresentOrElseMethodTest {
   public static void main(String args[]) {
      optionalIsPresent();
      optionalIsEmpty();
   }
   private static void optionalIsPresent() {
      Optional<String> optional = Optional.of("Test");
      AtomicInteger successCounter = new AtomicInteger();
      AtomicInteger emptyOptionalsCounter = new AtomicInteger();

      optional.ifPresentOrElse(x -> successCounter.incrementAndGet(), () ->       emptyOptionalsCounter.incrementAndGet());

      System.out.println(successCounter.get());
      System.out.println(emptyOptionalsCounter.get());
   }
   private static void optionalIsEmpty() {
      Optional optional = Optional.empty();
      AtomicInteger successCounter = new AtomicInteger();
      AtomicInteger emptyOptionalsCounter = new AtomicInteger();

      optional.ifPresentOrElse(x -> successCounter.incrementAndGet(), () -> emptyOptionalsCounter.incrementAndGet());

      System.out.println(successCounter.get());
      System.out.println(emptyOptionalsCounter.get())
   }
}

出力

1
0
0
1


Optional.or()の構文:
public Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)

import java.util.Optional;

public class OptionalOrMethodTest {
   public static void main(String args[]) {
      optionalIsPresent();
      optionalIsEmpty();
   }
   private static void optionalIsPresent() {
      Optional<String> optional1 = Optional.of("Test1");
      Optional<String> optional2 = Optional.of("Test2");

      Optional<String> optional3 = optional1.or(() -> optional2);
      System.out.println(optional3.get());
   }
   private static void optionalIsEmpty() {
      Optional<String> optional1 = Optional.empty();
      Optional<String> optional2 = Optional.of("Test2");

      Optional<String> optional3 = optional1.or(() -> optional2);
      System.out.println(optional3.get());
   }
}

出力

Test1
Test2

  1. Javaのwait()メソッドとsleep()メソッドの違いは?

    sleep()メソッド 静的です スレッドの方法 クラスであり、現在実行中のスレッドを「実行不可」状態に送信できます 一方、 wait() メソッドはインスタンスメソッドであり、スレッドオブジェクトを使用して呼び出しており、そのオブジェクトに対してのみ影響を受けます。 sleep() 時間切れ後のメソッドウェイクアップまたはinterrupt()の呼び出し メソッド、 wait() 時間切れ後のメソッドウェイクアップまたはnotify()の呼び出し またはnotifyAll() 方法。 sleep() メソッドはロックまたはモニートを解放しません r待機中、 wait() メソッドは、待機

  2. JavaのcompareTo()メソッドとcompare()メソッドの違いは何ですか?

    同等 インターフェイスはcompareTo()を提供します オブジェクトの順序付けのためのメソッド。この順序はクラスと呼ばれます 自然順序付け およびcompareTo() この方法は、自然比較方法と呼ばれます。 。 コンパレータ インターフェイスは、並べ替え操作を実行するためのメソッドを提供します 。 コンパレータを使用する 複数の並べ替えシーケンスを実行できるインターフェース 。複数のデータメンバーに関してオブジェクトを並べ替えることができます。 compareTo() compareTo() メソッドはこのオブジェクトをo1オブジェクトと比較し、整数を返します 。 構文 publi