Java Optional的orElse()與orElseGet()兩個方法比較 - Baeldung
Optional的API通常有兩種可能引起混淆的方法: orElse() 和orElseGet():
String name = Optional.of("baeldung").orElseGet(() -> getRandomName()); String name = Optional.of("baeldung").orElse(getRandomName()); |
結論:對於上面這個示例,orElseGet()明顯優於 orElse() 。僅當不存在Optional 值時才執行作為引數傳遞Supplier方法(orElseGet()的引數函式為() -> getRandomName(),該方法只有不存在"baeldung"值時才會執行);而orElse()涉及每次執行的getRandomName()方法的計算 。
除了效能方面,其他值得考慮的因素還包括:
- 如果該方法將執行一些附加邏輯怎麼辦?例如,進行一些資料庫插入或更新
- 即使當我們為orElse() 引數分配一個物件時:String name = Optional.of("baeldung").orElse("Other")
我們仍然無緣無故地建立“Other” 物件
這就是為什麼對我們而言,根據需要在orElse() 和orElseGet()中 做出謹慎的決定非常重要–預設情況下,每次使用orElseGet() 更為有意義,除非預設物件已經構造並且可以直接訪問。
相關文章
- Java 兩個日期比較Java
- Java中幾個常用併發佇列比較 | BaeldungJava佇列
- JavaScript比較兩個時間JavaScript
- 比較兩個table是否相同
- java比較mysql兩個資料庫中差異JavaMySql資料庫
- java中利用hanlp比較兩個文字相似度的步驟JavaHanLP
- JavaScript 與 Java、PHP 的比較JavaScriptPHP
- python清空字典的兩種方法比較Python
- Js 比較兩個物件的鍵名與鍵值是否相等JS物件
- 比較兩個陣列是否相等陣列
- JavaScript比較兩個時間大小JavaScript
- shell比較兩個字串是否相等字串
- mysql比較兩個日期間隔MySql
- java中兩個物件間的屬性值複製,比較,轉為map方法實現Java物件
- javascript比較兩個時間日期的大小JavaScript
- 比較兩個資料庫的差異資料庫
- 比較兩個的表結構差異
- 比較兩個表的資料差別
- Cesium 比較常用的幾個方法
- initialize方法與load方法比較
- .NET CORE下最快比較兩個檔案內容是否相同的方法
- 比較輸入兩個版本號大小
- 幾種任務排程的 Java 實現方法與比較Java
- C#比較兩個字串的相似度【轉】C#字串
- 【IOS】java 與oc之間的比較iOSJava
- ASP.NET 與 JAVA 的比較 (轉)ASP.NETJava
- 在Struts中應用Validator進行兩個欄位的比較的方法。
- python如何比較兩個字串是否相等Python字串
- C++ - 比較兩個浮點數大小C++
- matlab比較兩個矩陣是否相等Matlab矩陣
- 用VBS比較兩個Excel檔案的資料Excel
- 比較兩個陣列中是否有相同的元素陣列
- java實現計算兩個日期相差多少月、比較兩個日期大小 等常用日期操作Java
- 雲原生Java與Golang比較 -lgorJavaGolang
- Java JIT與AOT效能比較 - foojayJava
- 執行緒等待兩種方法的喚醒的效率比較執行緒
- Java中對HashMap的深度分析與比較JavaHashMap
- 兩個Python web框架:Django & Tornado比較PythonWeb框架Django