Java集合类梳理
文章目錄
- 集合框架
- Collection
- List
- List常用方法
- ArrayList
- ArrayList常用方法
- LinkedList
- LinkedList常用方法
- Vector
- Vector 常用方法
- Stack
- Stack 常用方法
- Set
- HashSet
- HashSet 常用方法
- LinkedHashSet
- LinkedHashSet 常用方法
- TreeSet
- TreeSet常用方法
- EnumSet
- EnumSet 常用方法
- Map
- HashMap
- HashMap 常用方法
- Hashtable
- LinkedHashMap
- LinkedHashMap 的常用方法
- TreeMap
- TreeMap 常用方法
- TreeMap 排序方式
- WeakHashMap
- WeakHashMap 常用方法
- IdentityHashMap
- IdentityHashMap 常用方法
- EnumMap
- EnumMap 常用方法
- Properties
- Properties 常用方法
集合框架
Collection
Collection 接口用于表示任何對(duì)象或元素組。它是 List 和 Set 的父接口。
Collection 聲明的方法:
點(diǎn)擊查看方法摘要
List
List集合代表一個(gè)有序、可變長(zhǎng)、可重復(fù)的集合,集合中每個(gè)元素都有其對(duì)應(yīng)的順序索引。List集合默認(rèn)按照元素的添加順序設(shè)置元素的索引,可以通過索引(類似數(shù)組的下標(biāo))來訪問指定位置的集合元素。
List相當(dāng)于下圖的格子,按順序放入值,for循環(huán)可以挨個(gè)取出:
實(shí)現(xiàn)List接口的集合主要有:ArrayList、LinkedList、Vector、Stack。
特點(diǎn)梳理:
-
List集合為列表類型,以線性方式,有序存取對(duì)象。各元素的順序就是對(duì)象插入時(shí)的順序,即元素按進(jìn)入先后有序保存。
-
List集合有序是指存儲(chǔ)的元素有下標(biāo),下標(biāo)從0開始,以1遞增。所以可以通過使用索引來訪問List集合中的元素,即可以用下標(biāo)進(jìn)行元素的操作
-
List集合中的元素允許重復(fù),即可以存儲(chǔ)重復(fù)的元素。
List常用方法
點(diǎn)擊查看方法摘要
ArrayList
ArrayList是一個(gè)動(dòng)態(tài)數(shù)組,也是我們最常用的集合,是List類的典型實(shí)現(xiàn)。它允許任何符合規(guī)則的元素插入甚至包括null。每一個(gè)ArrayList都有一個(gè)初始容量(10),該容量代表了數(shù)組的大小。隨著容器中的元素不斷增加,容器的大小也會(huì)隨著增加。在每次向容器中增加元素的同時(shí)都會(huì)進(jìn)行容量檢查,當(dāng)快溢出時(shí),就會(huì)進(jìn)行擴(kuò)容操作。所以如果我們明確所插入元素的多少,最好指定一個(gè)初始容量值,避免過多的進(jìn)行擴(kuò)容操作而浪費(fèi)時(shí)間、效率。
如上圖,ArrayList若要找Killer,則要通過for循環(huán),從Tom開始挨個(gè)找才能找到,ArrayList的查詢速度比LinkedList快,但不及HashMap快。數(shù)據(jù)若是很龐大,而且又頻繁查找的業(yè)務(wù),建議使用散列表。
特點(diǎn)梳理:
-
底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,添加、查找、刪除均采用基本數(shù)組操作,可以存儲(chǔ)重復(fù)元素
-
查找效率高,添加、刪除效率低,整體效率高
-
初始大小10,最大容量Integer.MAX_VALUE - 8
-
滿時(shí)擴(kuò)容,擴(kuò)容大小為1.5倍,(int newCapacity = oldCapacity + (oldCapacity >> 1)。
-
采用Arrays.copyOf()產(chǎn)生新數(shù)組
-
沒有同步,線程不安全
ArrayList常用方法
點(diǎn)擊查看方法摘要
LinkedList
LinkedList 是List 接口的另一個(gè)實(shí)現(xiàn)類,除了可以根據(jù)索引訪問集合元素外,LinkedList 還實(shí)現(xiàn)了 Deque 接口,可以當(dāng)作雙端隊(duì)列來使用,也就是說,既可以當(dāng)作“棧”使用,又可以當(dāng)作隊(duì)列使用。
LinkedList 的實(shí)現(xiàn)機(jī)制與 ArrayList 的實(shí)現(xiàn)機(jī)制完全不同,ArrayList 內(nèi)部以數(shù)組的形式保存集合的元素,所以隨機(jī)訪問集合元素有較好的性能;LinkedList 內(nèi)部以鏈表的形式保存集合中的元素,所以隨機(jī)訪問集合中的元素性能較差,但在插入刪除元素時(shí)有較好的性能。
特點(diǎn)梳理:
-
同時(shí)實(shí)現(xiàn)了Queue和Deque接口
-
底層采用雙向鏈表實(shí)現(xiàn),頭結(jié)點(diǎn)不存放數(shù)據(jù),允許為null
-
只要是遍歷鏈表就需要使用 ListIterator
-
索引優(yōu)化,可以根據(jù) index 可以選擇從 first 和 last 開始遍歷
-
線程不安全
LinkedList常用方法
點(diǎn)擊查看方法摘要
Vector
與 ArrayList 相似,但是 Vector 是同步的。所以說 Vector 是線程安全的動(dòng)態(tài)數(shù)組。它的操作與 ArrayList 幾乎一樣。
Vector 類實(shí)現(xiàn)了可擴(kuò)展的對(duì)象數(shù)組。 像數(shù)組一樣,它包含可以使用整數(shù)索引訪問的組件。 但是, Vector 的大小可以根據(jù)需要增長(zhǎng)或縮小,以適應(yīng)在創(chuàng)建 Vector 之后添加和刪除項(xiàng)目。
特點(diǎn)梳理:
-
底層由數(shù)組實(shí)現(xiàn),添加、查找、刪除均采用基本數(shù)組操作,所以查找效率高,添加、刪除效率低
-
初始大小10,最大容量 Integer.MAX_VALUE - 8
-
滿時(shí)擴(kuò)容,擴(kuò)容大小為1.5倍,(int newCapacity = oldCapacity + (oldCapacity >> 1)
-
采用 Arrays.copyOf() 產(chǎn)生新數(shù)組
-
線程不安全
Vector 常用方法
點(diǎn)擊查看方法摘要
Stack
Stack 繼承自 Vector,實(shí)現(xiàn)一個(gè)后進(jìn)先出的堆棧。Stack 提供5個(gè)額外的方法使得 Vector 得以被當(dāng)作堆棧使用。基本的 push 和 pop 方法,還有 peek 方法得到棧頂?shù)脑?#xff0c;empty 方法測(cè)試堆棧是否為空,search 方法檢測(cè)一個(gè)元素在堆棧中的位置。Stack 剛創(chuàng)建后是空棧。
Stack 常用方法
點(diǎn)擊查看方法摘要
Set
繼承自 Collection 接口,且方法相同,Set 沒有在 Collection 的基礎(chǔ)上進(jìn)行功能的擴(kuò)展,只是比Collection 接口更加嚴(yán)格了,Set 接口是無序的。
Set集合的實(shí)現(xiàn)類可說是基于Map集合去寫的。通過內(nèi)部封裝Map集合來實(shí)現(xiàn)的比如HashSet內(nèi)部封裝了HashMap。
Set相當(dāng)于往袋子里放東西,無序取出(使用迭代器取出),如下圖:
特點(diǎn)梳理:
-
繼承自Collection
-
Set集合中的元素?zé)o序,即插入無序
-
不可指定位置訪問,即沒有索引值
HashSet
HashSet是Set集合最常用實(shí)現(xiàn)類,是其經(jīng)典實(shí)現(xiàn)。HashSet是按照hash算法來存儲(chǔ)元素的,因此具有很好的存取和查找性能。
HashSet使用HashMap的數(shù)據(jù)結(jié)構(gòu),僅使用HashMap中的key結(jié)構(gòu),value值一律為null。也就是說真實(shí)數(shù)據(jù)存儲(chǔ)在 HashMap 的 key 列,value 列全部為空。
HashSet 存儲(chǔ)原理:
當(dāng)向 HashSet 集合存儲(chǔ)一個(gè)元素時(shí),HashSet 會(huì)調(diào)用該對(duì)象的 hashCode() 方法得到其 hashCode 值,然后根據(jù) hashCode 值決定該對(duì)象的存儲(chǔ)位置,
HashSet 集合判斷兩個(gè)元素相等的標(biāo)準(zhǔn)是:
因此,如果(1)和(2)有一個(gè)不滿足條件,則認(rèn)為這兩個(gè)對(duì)象不相等,可以添加成功。如果兩個(gè)對(duì)象的 hashCode() 方法返回值相等,但是兩個(gè)對(duì)象通過 equals() 方法比較返回 false,HashSet會(huì)以鏈?zhǔn)浇Y(jié)構(gòu)將兩個(gè)對(duì)象保存在同一位置,這將導(dǎo)致性能下降,因此在編碼時(shí)應(yīng)避免出現(xiàn)這種情況。
HashSet 查找原理:
基于 HashSet 以上的存儲(chǔ)原理,在查找元素時(shí),HashSet 先計(jì)算元素的 HashCode 值(也就是調(diào)用對(duì)象的 hashCode 方法的返回值),然后直接到 hashCode 值對(duì)應(yīng)的位置去取出元素即可,這就是 HashSet 速度很快的原因。
重寫 hashCode() 方法的基本原則:
特點(diǎn)梳理:
-
不能保證元素的順序
-
HashSet不是線程同步的,如果多線程操作HashSet集合,則應(yīng)通過代碼來保證其同步
-
集合元素值可以是null
HashSet 常用方法
點(diǎn)擊查看方法摘要
LinkedHashSet
LinkedHashSet 是 HashSet 的一個(gè)子類,具有 HashSet 的特性,也是根據(jù)元素的 hashCode 值來決定元素的存儲(chǔ)位置。但它使用鏈表維護(hù)元素的次序,元素的順序與添加順序一致。由于 LinkedHashSet 需要維護(hù)元素的插入順序,因此性能略低于 HashSet,但在迭代訪問 Set 里的全部元素時(shí)有很好的性能。
LinkedHashSet 是一個(gè)非線程安全的集合。如果有多個(gè)線程同時(shí)訪問當(dāng)前 LinkedHashSet 集合容器,并且有一個(gè)線程對(duì)當(dāng)前容器中的元素做了修改,那么必須要在外部實(shí)現(xiàn)同步保證數(shù)據(jù)的冥等性。
特點(diǎn)梳理:
-
LinkedHashSet的底層使用LinkedHashMap存儲(chǔ)元素
-
LinkedHashSet是有序的,它是按照插入的順序排序的
-
LinkedHashSet 是一個(gè)非線程安全的集合
LinkedHashSet 常用方法
點(diǎn)擊查看方法摘要
TreeSet
TreeSet 是 SortedSet 接口的實(shí)現(xiàn)類,TreeSet可以保證元素處于排序狀態(tài),它采用紅黑樹的數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)集合元素。TreeSet 支持兩種排序方法:自然排序和定制排序,默認(rèn)采用自然排序。
排序:
當(dāng)向TreeSet中添加自定義對(duì)象時(shí),有 2 種排序方法:
要求自定義類實(shí)現(xiàn) java.lang.Comparable 接口并重寫 compareTo(Object obj) 方法。在此方法中,指明按照自定義類的哪個(gè)屬性進(jìn)行排序
當(dāng)元素不具備比較性時(shí),此時(shí)只能為容器添加比較器來解決問題,即創(chuàng)建 TreeSet 時(shí)向其中加入Comparator
特點(diǎn)梳理:
-
有序
-
不可重復(fù)
-
紅黑樹
-
基于Treemap實(shí)現(xiàn)
-
自定義排序等特點(diǎn)
-
非線程安全
-
TreeSet中存儲(chǔ)的類型必須是一致的,不能一下存 int,一下又存 String
TreeSet常用方法
點(diǎn)擊查看方法摘要
EnumSet
EnumSet 是一個(gè)專為枚舉類設(shè)計(jì)的集合抽象類,EnumSet 中的所有元素都必須是指定枚舉類型的枚舉值,該枚舉類型在創(chuàng)建EnumSet時(shí)顯式或隱式地指定。不允許添加 null 值。EnumSet 的集合元素也是有序的,它以枚舉值在 Enum 類內(nèi)的定義順序來決定集合元素的順序。
特點(diǎn)梳理:
-
EnumSet的集合元素也是有序的,EnumSet以枚舉值在Enum類內(nèi)的定義順序來決定集合元素的順序
-
EnumSet在內(nèi)部以位向量的形式存儲(chǔ),這種存儲(chǔ)形式非常緊湊、高效,因此 EnumSet 對(duì)象占用內(nèi)存很小,而且運(yùn)行效率很好。尤其是進(jìn)行批量操作(如調(diào)用containsAll()和retainAll()方法)時(shí),如果其參數(shù)也是EnumSet集合,則該批量操作的執(zhí)行速度也非常快
-
EnumSet 集合不允許加入 null 元素,如果試圖插入 null 元素,EnumSet 將拋出 NullPointerException 異常
-
EnumSet 類沒有暴露任何構(gòu)造器來創(chuàng)建該類的實(shí)例,程序應(yīng)該通過它提供的類方法來創(chuàng)建 EnumSet 對(duì)象
-
如果只是想判斷 EnumSet 是否包含 null 元素或試圖刪除 null 元素都不會(huì)拋出異常,只是刪除操作將返回false,因?yàn)闆]有任何 null 元素被刪除。
EnumSet 常用方法
點(diǎn)擊查看方法摘要
Map
Map 接口采用鍵值對(duì) Map<K,V> 的存儲(chǔ)方式,保存具有映射關(guān)系的數(shù)據(jù),因此,Map 集合里保存兩組值,一組值用于保存 Map 里的 key,另外一組值用于保存 Map 里的 value,key 和 value 可以是任意引用類型的數(shù)據(jù)。key 值不允許重復(fù),可以為 null。如果添加 key-value 對(duì)時(shí) Map 中已經(jīng)有重復(fù)的 key,則新添加的 value 會(huì)覆蓋該 key 原來對(duì)應(yīng)的 value。常用實(shí)現(xiàn)類有 HashMap、LinkedHashMap、TreeMap等。
Map 聲明的方法:
點(diǎn)擊查看方法摘要
HashMap
HashMap 基于 hashing 原理,通過 put() 和 get() 方法存儲(chǔ)和獲取對(duì)象。當(dāng)我們將鍵值對(duì)傳遞給 put() 方法時(shí),它調(diào)用鍵(key)對(duì)象的 hashCode() 方法來計(jì)算 hashCode 值,然后找到對(duì)應(yīng)的 bucket 位置來儲(chǔ)存值(value)對(duì)象。當(dāng)獲取對(duì)象時(shí),通過鍵(key)對(duì)象的 equals() 方法找到正確的鍵值對(duì),然后返回對(duì)象。HashMap使用鏈表來解決碰撞問題,當(dāng)發(fā)生碰撞了,對(duì)象將會(huì)存儲(chǔ)在鏈表的下一個(gè)節(jié)點(diǎn)中。
原理圖 1:
注:JDK1.8中,HashMap采用數(shù)組+鏈表+紅黑樹實(shí)現(xiàn),當(dāng)鏈表長(zhǎng)度超過閾值(8)時(shí),將鏈表轉(zhuǎn)換為紅黑樹,這樣大大減少了查找時(shí)間。
原理圖 2:
原理圖 3:
如上“原理圖 3”,散列表中有散列數(shù)組,散列數(shù)組存放的元素是線性表(散列桶)。往散列表存放數(shù)據(jù)是鍵值對(duì)放進(jìn)去,“Mac”和“Jerry”的HashCode一樣,所以計(jì)算出來的散列值一樣,假設(shè)該散列值計(jì)算得到的下標(biāo)是2,就將“Mac”和“Jerry”存放在散列數(shù)組下標(biāo)為2的這個(gè)散列桶里。而“Andy”的散列值計(jì)算得到的下標(biāo)是8,那么“Andy”就保存在下標(biāo)為8的散列桶里。由于所存放的數(shù)據(jù)只在下標(biāo)為2和8的散列桶中,所以散列數(shù)組中其它位置則為空值。要找25這個(gè)元素,只要計(jì)算“Jerry”的散列值,最后計(jì)算得到下標(biāo)2,然后在對(duì)應(yīng)的散列桶中依次查找“Jerry”,就可以找到對(duì)應(yīng)的25。
其實(shí)真正意義上的散列表如下圖所示,以上“原理圖”只是說明原理罷了,使用HashMap時(shí)將其想象成多行兩列的表格即可。
真正存取的有意義的元素是key值所對(duì)應(yīng)的value值,key值只不過是value值所取的名字,為了方便以后的查找之用。
特點(diǎn)梳理:
-
底層采用哈希表+鏈表或紅黑樹實(shí)現(xiàn)。
-
哈希表初始容量 1<<4,最大容量 1<<30,默認(rèn)負(fù)載因子0.75f。
-
閾值為負(fù)載因子*容量,到達(dá)閾值時(shí)擴(kuò)容,擴(kuò)容為兩倍,或者在最開始的時(shí)候,這是為了如果預(yù)計(jì)Hashmap會(huì)很大,可以把初始值調(diào)大。
-
當(dāng)一個(gè)桶的節(jié)點(diǎn)數(shù)大小到達(dá) 8,開始從鏈表轉(zhuǎn)換為紅黑樹。當(dāng)一個(gè)紅黑樹大小到達(dá) 6,退化為鏈表。
-
線程不安全
HashMap 常用方法
點(diǎn)擊查看方法摘要
Hashtable
HashMap 與 Hashtable 是 Map 接口的兩個(gè)典型實(shí)現(xiàn),它們之間的關(guān)系完全類似于 ArrayList 與 Vertor。HashTable 是一個(gè)古老的 Map 實(shí)現(xiàn)類,它提供的方法比較繁瑣,目前基本不用了。
原理圖:
LinkedHashMap
對(duì)于 LinkedHashMap 而言,它繼承自 HashMap,底層使用哈希表與雙向鏈表來保存所有元素。其基本操作與父類HashMap相似。LinkedHashMap 使用雙向鏈表來維護(hù) key-value 對(duì)的次序(其實(shí)只需要考慮 key 的次序即可),該鏈表負(fù)責(zé)維護(hù) Map 的迭代順序,默認(rèn)與插入順序一致(默認(rèn)情況,遍歷時(shí)的順序是按照插入節(jié)點(diǎn)的順序),即在每次插入數(shù)據(jù),或者訪問、修改數(shù)據(jù)時(shí),會(huì)增加節(jié)點(diǎn)、或調(diào)整鏈表的節(jié)點(diǎn)順序,以決定迭代時(shí)輸出的順序。
可以在構(gòu)造時(shí)傳入 accessOrder 參數(shù),使得其遍歷順序按照訪問的順序輸出。
原理圖:
特點(diǎn)梳理:
-
繼承自HashMap
-
額外使用類似于LinkedList的雙向鏈表,維護(hù)插入順序
-
線程不安全,效率高
-
鍵和值都可以是 null
-
底層由雙向鏈表和哈希表組成
-
鍵元素:唯一(由哈希表結(jié)構(gòu)保證)、有序(按照錄入順序,由鏈表結(jié)構(gòu)保證)
LinkedHashMap 的常用方法
點(diǎn)擊查看方法摘要
TreeMap
TreeMap 是 SortedMap 的實(shí)現(xiàn)類,是一個(gè)紅黑樹的數(shù)據(jù)結(jié)構(gòu),每個(gè) key-value 對(duì)作為紅黑樹的一個(gè)節(jié)點(diǎn)。TreeMap 存儲(chǔ) key-value 對(duì)時(shí),需要根據(jù) key 對(duì)節(jié)點(diǎn)進(jìn)行排序。
TreeMap 繼承自 AbstractMap,實(shí)現(xiàn)了 Map, Cloneable, NavigableMap, Serializable 接口:
TreeMap 繼承于 AbstractMap,而 AbstractMap 實(shí)現(xiàn)了 Map 接口,并實(shí)現(xiàn)了 Map 接口中定義的方法,減少了其子類繼承的復(fù)雜度
TreeMap 實(shí)現(xiàn)了 Map 接口,成為 Map 框架中的一員,可以包含著 key-value 形式的元素
TreeMap 實(shí)現(xiàn)了 NavigableMap 接口,意味著擁有了更強(qiáng)的元素搜索能力
TreeMap 實(shí)現(xiàn)了 Cloneable 接口,實(shí)現(xiàn)了 clone() 方法,可以被克隆
TreeMap 實(shí)現(xiàn)了 Java.io.Serializable 接口,支持序列化操作,可通過 Hessian 協(xié)議進(jìn)行傳輸
特點(diǎn)梳理:
-
底層采用紅黑樹實(shí)現(xiàn)
-
保存的元素按照一定的規(guī)則有序
-
可以傳入比較器,即可自定義排序規(guī)則,不然就按照key排序
-
非線程安全
TreeMap 常用方法
點(diǎn)擊查看方法摘要
TreeMap 排序方式
-
自然排序:TreeMap 的所有 key 必須實(shí)現(xiàn) Comparable 接口,而且所有的 key 應(yīng)該是同一個(gè)類的對(duì)象,否則會(huì)拋出ClassCastException。
-
定制排序:創(chuàng)建TreeMap時(shí),傳入一個(gè)Comparator對(duì)象,該對(duì)象負(fù)責(zé)對(duì)TreeMap中的所有key進(jìn)行排序。
WeakHashMap
WeakHashMap 繼承于AbstractMap,實(shí)現(xiàn)了Map接口。和HashMap一樣,WeakHashMap 也是一個(gè)散列表,它存儲(chǔ)的內(nèi)容也是鍵值對(duì)(key-value)映射,而且鍵和值都可以是null。不過WeakHashMap的鍵是“弱鍵”。在 WeakHashMap 中,當(dāng)某個(gè)鍵不再正常使用時(shí),會(huì)被從WeakHashMap中被自動(dòng)移除。更精確地說,對(duì)于一個(gè)給定的鍵,其映射的存在并不阻止垃圾回收器對(duì)該鍵的丟棄,這就使該鍵成為可終止的,被終止,然后被回收。某個(gè)鍵被終止時(shí),它對(duì)應(yīng)的鍵值對(duì)也就從映射中有效地移除了。
這個(gè)“弱鍵”的原理呢?大致上就是,通過WeakReference和ReferenceQueue實(shí)現(xiàn)的。 WeakHashMap的key是“弱鍵”,即是WeakReference類型的;ReferenceQueue是一個(gè)隊(duì)列,它會(huì)保存被GC回收的“弱鍵”。實(shí)現(xiàn)步驟是:
新建WeakHashMap,將“鍵值對(duì)”添加到WeakHashMap中。
實(shí)際上,WeakHashMap是通過數(shù)組table保存Entry(鍵值對(duì));每一個(gè)Entry實(shí)際上是一個(gè)單向鏈表,即Entry是鍵值對(duì)鏈表。
當(dāng)某“弱鍵”不再被其它對(duì)象引用,并被GC回收時(shí)。在GC回收該“弱鍵”時(shí),這個(gè)“弱鍵”也同時(shí)會(huì)被添加到ReferenceQueue(queue)隊(duì)列中。
當(dāng)下一次我們需要操作WeakHashMap時(shí),會(huì)先同步table和queue。table中保存了全部的鍵值對(duì),而queue中保存被GC回收的鍵值對(duì);同步它們,就是刪除table中被GC回收的鍵值對(duì)。
這就是“弱鍵”如何被自動(dòng)從WeakHashMap中刪除的步驟了。
WeakHashMap 常用方法
點(diǎn)擊查看方法摘要
IdentityHashMap
IdentityHashMap 比較 key 時(shí)是“引用相等”,即對(duì)于 k1 和 k2,當(dāng)k1 == k2 時(shí),IdentityHashMap 認(rèn)為兩個(gè)key相等。
IdentityHashMap 允許使用 null 作為 key 和 value.,不保證任何 Key-value 對(duì)之間的順序, 更不能保證他們的順序隨時(shí)間的推移不會(huì)發(fā)生變化。
IdentityHashMap 有其特殊用途,比如序列化、深度復(fù)制、記錄對(duì)象代理等。
IdentityHashMap 常用方法
點(diǎn)擊查看方法摘要
EnumMap
Map 接口的實(shí)現(xiàn),其 key-value 映射中的 key 是 Enum 類型。其原理就是一個(gè)對(duì)象數(shù)組,數(shù)組的下標(biāo)索引就是根據(jù) Map 中的 key 直接獲取,即枚舉中的 ordinal 值。效率比 HashMap 高,可以直接獲取數(shù)組下標(biāo)索引并訪問到元素。
EnumMap 常用方法
點(diǎn)擊查看方法摘要
Properties
Properties 類是 Hashtable 類的子類,它相當(dāng)于一個(gè) key、value 都是 String 類型的 Map ,主要用于讀取配置文件。
Properties 常用方法
點(diǎn)擊查看方法摘要
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: 反码、原码、补码的观点阐述
- 下一篇: 如何开发 Servlet 程序