java分页中显示更多_早期更多失败– Java 8
java分頁(yè)中顯示更多
快速失敗或早期失敗是一種軟件工程概念,旨在通過在不應(yīng)該發(fā)生的事情發(fā)生時(shí)立即停止執(zhí)行來防止復(fù)雜問題的發(fā)生。 在之前的博客文章和演示中,我將詳細(xì)介紹這種方法的優(yōu)點(diǎn),在此博客文章中,我將詳細(xì)介紹Java 8中該思想的另一種用法。
在Java中,由Collection類(例如ArrayList,HashSet,Vector等)返回的迭代器快速失敗。 這意味著,如果在迭代時(shí)嘗試從基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)中添加()或remove(),則會(huì)收到ConcurrentModificationException。 讓我們來看看:
在Java 8u20中,Collections.sort()API也會(huì)快速失敗。 這意味著您也不能在迭代內(nèi)調(diào)用它。 例如:
import static java.util.Arrays.asList; List ints = new ArrayList<>(asList(1,2,3,4,5,6,9,15,67,23,22,3,1,4,2));for (Integer i: ints) {// some codeCollections.sort(ints); // throws java.util.ConcurrentModificationException }這是有道理的。 遍歷數(shù)據(jù)結(jié)構(gòu)并在迭代過程中對(duì)其進(jìn)行排序不僅是反直觀的,而且還可能導(dǎo)致不可預(yù)測(cè)的結(jié)果。 現(xiàn)在,您可以避免這種情況,并且如果在調(diào)用排序后立即中斷,就不會(huì)出現(xiàn)異常。
import static java.util.Arrays.asList; List ints = new ArrayList<>(asList(1,2,3,4,5,6,9,15,67,23,22,3,1,4,2));for (Integer i: ints) {// some codeCollections.sort(ints); // throws java.util.ConcurrentModificationExceptionbreak; }但是,這幾乎不是很棒的代碼。 嘗試避免使用舊的skool迭代,并盡可能使用Lambda。 但是,如果您遇到困難,只需在迭代之外進(jìn)行排序
import static java.util.Arrays.asList; List ints = new ArrayList<>(asList(1,2,3,4,5,6,9,15,67,23,22,3,1,4,2)); Collections.sort(ints);for (Integer i: ints) {// some code }或使用添加時(shí)排序的數(shù)據(jù)結(jié)構(gòu)。
Java 8版本20中引入了Collections.sort()API的新行為。 值得一看的是詳細(xì)介紹API更改的特定部分:
”
領(lǐng)域 :core-libs / java.util.collections
簡(jiǎn)介 :Collection.sort推遲到List.sort
以前, Collection.sort復(fù)制列表中的元素以將其排序到一個(gè)數(shù)組中,對(duì)該數(shù)組進(jìn)行排序,然后使用該數(shù)組中的這些元素和默認(rèn)方法就地更新列表。
List.sort推遲到Collection.sort。 這是非最佳的安排。
從8u20版本開始, Collection.sort推遲到List.sort 。 這意味著,例如,使用ArrayList實(shí)例調(diào)用Collection.sort現(xiàn)有代碼現(xiàn)在將使用ArrayList實(shí)現(xiàn)的最佳排序。
”
我認(rèn)為,如果Oracle在此方面更明確地說明這種更改如何引起運(yùn)行時(shí)問題,那將有所幫助。 考慮到每個(gè)人都使用Collections框架,如果以前沒有拋出異常的API現(xiàn)在可以在相同的情況下使用(錯(cuò)誤代碼及其全部?jī)?nèi)容),那么發(fā)行說明使開發(fā)人員更容易找到信息會(huì)更好。
翻譯自: https://www.javacodegeeks.com/2017/11/fail-early-java-8.html
java分頁(yè)中顯示更多
總結(jié)
以上是生活随笔為你收集整理的java分页中显示更多_早期更多失败– Java 8的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Telegram、TON 基金会宣布与腾
- 下一篇: 大文件拆分小文件求top_将文件拆分为流