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中幾個常用併發佇列比較 | BaeldungJava佇列
- java比較mysql兩個資料庫中差異JavaMySql資料庫
- 比較兩個table是否相同
- JavaScript比較兩個時間JavaScript
- java中利用hanlp比較兩個文字相似度的步驟JavaHanLP
- pandas比較兩個文件的差異
- Javers 比較兩個類的差異
- initialize方法與load方法比較
- Js 比較兩個物件的鍵名與鍵值是否相等JS物件
- 比較兩個陣列是否相等陣列
- Cesium 比較常用的幾個方法
- .NET CORE下最快比較兩個檔案內容是否相同的方法
- PyCharm與VSCode兩種IDE比較 - towardsdatasciencePyCharmVSCodeIDE
- matlab比較兩個矩陣是否相等Matlab矩陣
- python如何比較兩個字串是否相等Python字串
- C#比較兩個字串的相似度【轉】C#字串
- Java中CompletableFuture的thenApply與thenApplyAsync比較JavaAPP
- 比較兩個陣列中是否有相同的元素陣列
- C++ - 比較兩個浮點數大小C++
- 雲原生Java與Golang比較 -lgorJavaGolang
- Java JIT與AOT效能比較 - foojayJava
- 比較兩個檔案,求出不同的內容,A-B
- 如何比較兩個資料庫表結構的不同資料庫
- 同一張表的兩個欄位比較查詢
- 兩集合比較判斷
- JS 物件合併與克隆方法的分類與比較JS物件
- ==和equals方法的比較
- 比較Java Swing中三種註冊事件的方法Java事件
- Java的BigDecimal比較大小JavaDecimal
- Java 9 Optional API 新增方法JavaAPI
- Apache與Nginx的優缺點、效能比較,到底選擇哪個比較好?ApacheNginx
- Java 比較器Java
- 相容oracle的edit_distance_similarity 比較兩個字串相似度OracleMILA字串
- Go和Python比較的話,哪個比較好?GoPython
- 在Linux中,如何比較兩個檔案差異?Linux
- 兩個coca略有不同詞頻檔案 比較
- Java快取機制:Ehcache與Guava Cache的比較Java快取Guava
- volatile與Atomic的比較