摘要:集合的種類常見的集合類分如下幾個種類詳解接口是和接口的父接口,也是集合類除外根接口。接口集合中元素的存放特點是元素有序,同一元素可重復(fù)??偨Y(jié)中集合是一個非常重要的知識點,在實際運用中也是常常會使用到。
集合的種類
常見的集合類分如下幾個種類:
Collection
- List - ArrayList - LinkedList - Set - HashSet - TreeSet
Map
- HashMap - TreeMapCollection 詳解
Collection接口是List和Set接口的父接口,也是集合類(Map除外)根接口。 里面定義了很多的集合操作方法,源碼就不放了,我講=將里面涉及到的一些方法截圖出來,如圖所示:
這里面的方法可以自行百度其用法。
List集合中元素的存放特點是:元素有序,同一元素可重復(fù)。List接口存在兩個實現(xiàn)類,ArrayList和LinkedList。兩者之間雖然都是用于存放有序可重復(fù)的元素,但是兩者之間存在一定的區(qū)別;
1.ArrayList:底層實現(xiàn)是一個動態(tài)數(shù)組,查詢通過數(shù)組下標(biāo)查詢; 2.LinkedList:底層實現(xiàn)是鏈表結(jié)構(gòu),查詢的過程需要重頭到位一個一個過濾對比
總結(jié):所以我們可以得出 ArrayList 查詢速度要優(yōu)于LinkedList,但是LinkedList的插入速度要優(yōu)于ArrayList;所以我們在使用的過程中,查詢多使用 ArrayList ,查詢刪除多,使用 LinkedList 。
Set集合 HashSetHashSet類直接實現(xiàn)了Set接口, 其底層其實是包裝了一個HashMap去實現(xiàn)的。HashSet采用HashCode算法來存取集合中的元素,因此具有比較好的讀取和查找性能。
HashSet的特征不能保證元素插入的順序,因為HashSet按HashCode存儲對象(元素)決定的,對象變化則可能導(dǎo)致HashCode變化
HashSet是線程非安全的
HashSet元素值可以為NULL
TreeSet類的特征底層是用TreeMap實現(xiàn)的,本質(zhì)上是一個紅黑樹原理。
Map接口java中的Map集合使用鍵(key)值(value)來保存數(shù)據(jù),其中值(value)可以重復(fù),但鍵(key)必須是唯一,也可以為空,但最多只能有一個key為空,它的主要實現(xiàn)類有HashMap、TreeMap。
HashMap HashMap的特征保存元素時先進(jìn)后出、無序性;
鍵值可以為null,但最多只能為一個null;
不支持線程同步,即可以有多個線程同時寫HashMap,可能導(dǎo)致數(shù)據(jù)不一致,如果需要同步可以使用Collection的synchronizedMap方法使其同步。
TreeMap的特征保存元素key-value不能為null;
允許key-value重復(fù);
遍歷元素時隨機(jī)排列。
總結(jié)Java中集合是一個非常重要的知識點,在實際運用中也是常常會使用到。每個不同的集合類的特征對于我們在使用選擇上有著直接關(guān)系,所以熟悉他們的特征非常重要
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69751.html
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
以下是Java技術(shù)棧微信公眾號發(fā)布的關(guān)于 Java 的技術(shù)干貨,從以下幾個方面匯總。 Java 基礎(chǔ)篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進(jìn)階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎(chǔ)篇 8張圖帶你輕松溫習(xí) Java 知識 Java父類強(qiáng)制轉(zhuǎn)換子類原則 一張圖搞清楚 Java 異常機(jī)制 通用唯一標(biāo)識碼UUID的介紹及使用 字符串...
摘要:再附一部分架構(gòu)面試視頻講解本文已被開源項目學(xué)習(xí)筆記總結(jié)移動架構(gòu)視頻大廠面試真題項目實戰(zhàn)源碼收錄 Java反射(一)Java反射(二)Java反射(三)Java注解Java IO(一)Java IO(二)RandomAccessFileJava NIOJava異常詳解Java抽象類和接口的區(qū)別Java深拷貝和淺拷...
摘要:中的詳解必修個多線程問題總結(jié)個多線程問題總結(jié)有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升有哪些源代碼看了后讓你收獲很多,代碼思維和能力有較大的提升開源的運行原理從虛擬機(jī)工作流程看運行原理。 自己實現(xiàn)集合框架 (三): 單鏈表的實現(xiàn) 自己實現(xiàn)集合框架 (三): 單鏈表的實現(xiàn) 基于 POI 封裝 ExcelUtil 精簡的 Excel 導(dǎo)入導(dǎo)出 由于 poi 本身只是針對于 ...
摘要:基礎(chǔ)問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
閱讀 2169·2023-04-26 02:41
閱讀 2189·2021-09-24 09:47
閱讀 1596·2019-08-30 15:53
閱讀 1253·2019-08-30 13:01
閱讀 1927·2019-08-29 11:27
閱讀 2902·2019-08-28 17:55
閱讀 1831·2019-08-26 14:00
閱讀 3495·2019-08-26 10:18