Java 9のOptional.ifPresentOrElse()メソッドとOptional.or()メソッドの違いは?
両方のOptional.ifPresentOrElse() およびOptional.or() Java 9バージョンでは、機能を向上させるためのメソッドが導入されています。 Optional.ifPresentOrElse() メソッドは、値が存在するかどうかを確認し、値を指定してアクションを適用します。それ以外の場合は、空のアクションを返しますが、オプション.or() メソッドは、値が存在するかどうかをチェックします。returnオプションには値が含まれます。それ以外の場合、returnOptionalはSupplier関数に適用されます。 Optional.ifPresentOrElse() メソッドには、コンシューマーという2つのパラメーターが含まれています および実行可能 一方、オプション.or() メソッドには、サプライヤーという1つのパラメーターのみが含まれています 。
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
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
-
Javaのwait()メソッドとsleep()メソッドの違いは?
sleep()メソッド 静的です スレッドの方法 クラスであり、現在実行中のスレッドを「実行不可」状態に送信できます 一方、 wait() メソッドはインスタンスメソッドであり、スレッドオブジェクトを使用して呼び出しており、そのオブジェクトに対してのみ影響を受けます。 sleep() 時間切れ後のメソッドウェイクアップまたはinterrupt()の呼び出し メソッド、 wait() 時間切れ後のメソッドウェイクアップまたはnotify()の呼び出し またはnotifyAll() 方法。 sleep() メソッドはロックまたはモニートを解放しません r待機中、 wait() メソッドは、待機
-
JavaのcompareTo()メソッドとcompare()メソッドの違いは何ですか?
同等 インターフェイスはcompareTo()を提供します オブジェクトの順序付けのためのメソッド。この順序はクラスと呼ばれます 自然順序付け およびcompareTo() この方法は、自然比較方法と呼ばれます。 。 コンパレータ インターフェイスは、並べ替え操作を実行するためのメソッドを提供します 。 コンパレータを使用する 複数の並べ替えシーケンスを実行できるインターフェース 。複数のデータメンバーに関してオブジェクトを並べ替えることができます。 compareTo() compareTo() メソッドはこのオブジェクトをo1オブジェクトと比較し、整数を返します 。 構文 publi