日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

早期更多失败– Java 8

發布時間:2023/12/3 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 早期更多失败– Java 8 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速失敗或早期失敗是一種軟件工程概念,旨在通過在不應該發生的事情發生時立即停止執行來防止復雜問題的發生。 在之前的博客文章和演示中,我將詳細介紹這種方法的優點,在此博客文章中,我將詳細介紹Java 8中該思想的另一種用法。

在Java中,由Collection類(例如ArrayList,HashSet,Vector等)返回的迭代器快速失敗。 這意味著,如果您在迭代時嘗試從基礎數據結構中添加()或remove(),則會收到ConcurrentModificationException。 讓我們來看看:

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 codeints.add(57); // throws java.util.ConcurrentModificationException }

在Java 8u20中,Collections.sort()API也會快速失敗。 這意味著您也不能在迭代內調用它。 例如:

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 }

這很有道理。 遍歷數據結構并在迭代過程中對其進行排序不僅是反直觀的,而且還可能導致不可預測的結果。 現在,您可以解決此問題,如果您在排序調用后立即中斷,就不會獲得異常。

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。 但是,如果遇到問題,只需在迭代之外進行排序

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 }

或使用添加時排序的數據結構。

Java 8版本20中引入了Collections.sort()API的這一新行為。 值得看一下詳細介紹API更改的特定部分:

區域 :core-libs / java.util.collections
簡介 :Collection.sort推遲到List.sort

以前, Collection.sort復制列表中的元素以將其排序到一個數組中,對該數組進行排序,然后使用數組中的這些元素和默認方法在適當的位置更新列表。
List.sort推遲到Collection.sort。 這是非最佳的安排。

從8u20版本開始, Collection.sort推遲到List.sort 。 這意味著,例如,使用ArrayList實例調用Collection.sort現有代碼現在將使用ArrayList實現的最佳排序。

我認為,如果Oracle在此方面更明確地說明這種更改如何引起運行時問題,那將有所幫助。 考慮到每個人都使用Collections框架,如果以前沒有拋出異常的API現在可以在相同的情況下使用(錯誤代碼及其全部內容),那么發行說明使開發人員更容易找到信息會更好。

翻譯自: https://www.javacodegeeks.com/2017/11/fail-early-java-8.html

總結

以上是生活随笔為你收集整理的早期更多失败– Java 8的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。