java list 與set 集合的迭代器在進行元素操作時出現數據混亂問題及原因

為什么 List 和 Set 迭代器刪除結果不同?

1. List 和 Set 的本質差異
  • List(如 ArrayList):
    • 有序集合,元素按插入順序存儲,允許重復元素。
    • 迭代器遍歷時,元素按索引順序返回。
    • 刪除操作(通過 Iterator.remove())會移除當前元素,影響后續索引,但不改變其他元素的相對順序。
  • Set(如 HashSet):
    • 無序集合,元素無固定順序,不允許重復元素(基于 equals 和 hashCode)。
    • 迭代器遍歷順序不可預測(HashSet 依賴哈希表,順序可能隨實現或 JVM 變化)。
    • 刪除操作會移除當前元素,但由于無序性,結果表現可能與預期不同。
2. 迭代器刪除行為
  • Iterator.remove()
    • Java 的 Iterator 接口提供 remove() 方法,用于在迭代過程中安全刪除元素,避免 ConcurrentModificationException。
    • 刪除操作基于當前迭代位置,List 和 Set 的底層數據結構導致不同表現:
      • List:刪除元素后,后續元素索引前移,迭代器繼續按順序遍歷剩余元素。
      • Set:刪除元素不影響其他元素的“位置”(因為無序),但遍歷順序可能因哈希表重排而變化。
3. 差異的原因
  • 順序性
    • List 的迭代器按索引順序遍歷,刪除后結果可預測(剩余元素按原順序)。
    • Set 的迭代器遍歷順序不可預測(HashSet 依賴哈希桶),刪除后剩余元素的順序可能與初始不同。
  • 重復性
    • List 允許重復元素,刪除特定元素只移除當前迭代的實例。
    • Set 不允許重復,刪除元素后集合中該元素完全移除。
  • 底層實現
    • ArrayList 使用數組,刪除操作會導致數組元素移位。
    • HashSet 使用哈希表,刪除操作只移除哈希桶中的元素,不影響其他桶。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/915575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/915575.shtml
英文地址,請注明出處:http://en.pswp.cn/news/915575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大語言模型:人像攝影的“達芬奇轉世”?——從算法解析到光影重塑的智能攝影革命

導言在攝影術誕生之初,達芬奇或許無法想象,他對于光影、比例和解剖的嚴謹研究,會在數百年后以另一種形式重生。今天,當攝影師面對復雜的光線環境或苦苦尋找最佳構圖時,一位由代碼構筑的“光影軍師”正悄然降臨——大語…

Java——MyBatis從入門到精通:一站式學習指南

MyBatis從入門到精通:一站式學習指南 作為一款優秀的半自動ORM框架,MyBatis以其靈活的SQL控制和簡潔的配置方式,成為Java后端開發中持久層框架的首選。本文將從基礎概念到高級特性,全面講解MyBatis的使用方法,包含實用…

面試150 添加與搜索單詞--數據結構設計

思路 通過哈希法去實現,這里主要描述search的思路:如果’.‘不在word中,我們只需要去查詢word在不在set中。如果’.‘存在,我們對哈希中的字符串進行遍歷w,如果當前字符串的長度不等于word跳過,對word進行遍歷&#xf…

學習打卡網站(搭子版本)

概述 之前用了網上的一些學習打卡類app,基本都是收費的,而且有些自己想要的功能卻沒有,甚至還有廣告,正好暑假是個需要容易懶惰的時間,所以干脆自己做了一個能和學習搭子一起記錄計劃的小網站。 昨天早上開始寫&#x…

分享如何在Window系統的云服務器上部署網站及域名解析+SSL

最近看到阿里云的服務器有個199的活動,買了個2核4G帶寬5M的服務器,用于小網站的運營也足夠,于是就買一個,并且我還挑了個新加坡的站點,本想著運營獨立站,用新加坡的站點外網訪問會更友好一點。于是問題就來…

FastAdmin系統框架通用操作平滑遷移到新服務器的詳細步驟-優雅草卓伊凡

FastAdmin系統框架通用操作平滑遷移到新服務器的詳細步驟-優雅草卓伊凡我們蜻蜓hr系統采用的后端框架就是fastadmin,因此我們平穩遷移以此為例,為什么要遷移一份是因為有甲方需要。遷移FastAdmin系統到新服務器需要確保數據完整性和系統功能正常。以下是…

Request和Response相關介紹

Request 和 Response 是什么? Request(請求對象):用來接收瀏覽器發過來的數據。 Response(響應對象):用來把服務器處理后的結果返回給瀏覽器。 1. request 的作用(獲取請求數據&am…

Springboot 實現熱部署

spring為開發者提供了一個名為spring-boot-devtools的模塊來使Spring Boot應用支持熱部署&#xff0c;提高開發者的開發效率&#xff0c;無需手動重啟Spring Boot應用。引入依賴<dependency><groupId>org.springframework.boot</groupId><artifactId>s…

虛擬機擴展磁盤容量后擴展分區大小

1. 首先檢查磁盤剩余空間sudo fdisk -l /dev/sda2. 如果有未分配空間&#xff0c;直接擴展分區sudo fdisk /dev/sda在fdisk交互界面中&#xff0c;依次寫入d # 刪除分區 3 # 例如選擇分區3&#xff08;/dev/sda3&#xff09; n # 新建分區 p # 主分區 3 # 分區號3 # 起始扇…

元宇宙與游戲:虛實交融的數字文明新紀元

引言&#xff1a;當游戲遇見元宇宙在紐約現代藝術博物館&#xff08;MoMA&#xff09;的"虛擬世界"特展中&#xff0c;一幅數字藝術作品《元宇宙誕生》引發觀展熱潮。這幅由AI與人類藝術家共同創作的作品&#xff0c;描繪了游戲《堡壘之夜》的虛擬演唱會與現實世界交…

音視頻學習(四十二):H264幀間壓縮技術

必要性與優勢 原始數字視頻數據量龐大&#xff0c;未經壓縮的視頻難以有效傳輸和存儲。例如&#xff0c;一個 1080p、30fps 的無壓縮視頻&#xff0c;每秒數據量可達數百兆比特。視頻壓縮的目標是在保證視覺質量的前提下&#xff0c;最大限度地減少數據冗余。視頻數據中存在多種…

微服務雪崩防護最佳實踐之sentinel

思考1、當服務訪問量達到一定程度&#xff0c;流量扛不住的時候&#xff0c;該如何處理&#xff1f;2、服務之間相互依賴&#xff0c;當服務A出現響應時間過長&#xff0c;影響到服務B的響應&#xff0c;進而產生連鎖反應&#xff0c;直至影響整個依賴鏈上的所有服務&#xff0…

阿里云監控及運維常見問題

云監控介紹&#xff1a;阿里云的云監控服務&#xff08;CloudMonitor&#xff09;是一款簡單易用、功能強大的監控工具&#xff0c;主要用來幫助用戶實時監控阿里 云上的各種資源&#xff08;比如服務器、數據庫、網絡等&#xff09;&#xff0c;并在出現問題時及時發出警報&am…

深入解析 vLLM 分布式推理與部署策略

在當今人工智能快速發展的時代&#xff0c;大型語言模型&#xff08;LLM&#xff09;的推理和部署面臨著諸多挑戰&#xff0c;尤其是當模型規模日益龐大時&#xff0c;如何高效地利用硬件資源成為關鍵問題。vLLM 作為一種強大的工具&#xff0c;為分布式推理和部署提供了多種策…

PostgreSQL 終端命令詳解及實際應用案例

PostgreSQL 作為一款功能強大的開源關系型數據庫&#xff0c;其終端命令是數據庫管理員、開發人員日常操作的核心工具。這些命令覆蓋數據庫連接、對象管理、數據操作、備份恢復、權限控制等多個維度&#xff0c;掌握其實際應用場景能顯著提升工作效率。本文結合不同行業的實操案…

步進電機基礎

1、ENABLE ̄\overline{ENABLE}ENABLE 的意思&#xff1a; ENABLE上面的橫線表示這是一個低電平有效的信號&#xff1a;當ENABLE信號為低電平&#xff08;0V或邏輯0&#xff09;時&#xff0c;芯片被使能&#xff08;激活&#xff09;當ENABLE信號為高電平&#xff08;VDD或邏輯…

Redis進階--緩存

目錄 一、引言 二、介紹 1.為什么Mysql的速度慢呢&#xff1f; 2.緩存更新策略 1.定期生成 2.實時生成 3.redis的內存淘汰機制 4.注意事項 1.緩存預熱 2.緩存穿透 3.緩存擊穿 4.緩存雪崩 三、總結 一、引言 本篇文章將介紹Redis其中一個重要的作用&#xff0c;作為…

微軟原版系統下載的幾個好用網站

“不要因為走得太遠&#xff0c;而忘記為什么出發。” 愿每一位Windows用戶&#xff0c;都能在這份情懷中找到屬于自己的小確幸&#xff01;滿滿的情懷&#xff01; 微軟官方渠道 微軟官網提供純凈的ISO鏡像下載&#xff0c;適用于Windows 10/11等系統。訪問Microsoft官網下…

kotlin Flow快速學習2025

其實&#xff0c;第一章節&#xff0c;只是讓你了解下Flow的基本情況。我們開發中&#xff0c;基本很少使用這種模式。所以來講&#xff0c;我們甚至可以直接使用StateFlow和SharedFlow才是正途。這是很多教程沒有說明的點。所以第一章隨便瀏覽下即可。日后再補充理解都是可以的…

【人工智能99問】什么是教師強制?(16/99)

文章目錄什么是教師強制&#xff1f;教師強制&#xff08;Teacher Forcing&#xff09;的定義原比例&#xff08;Original Proportion&#xff09;教師強制的舉例說明&#xff08;一&#xff09;教師強制的舉例說明&#xff08;二&#xff09;優點和缺點解決曝光偏差的方法什么…