這篇文章主要講解了“Java數(shù)據(jù)結(jié)構(gòu)List與Map的用法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java數(shù)據(jù)結(jié)構(gòu)List與Map的用法”吧!
成都創(chuàng)新互聯(lián)主營甘南網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App制作,甘南h5微信小程序定制開發(fā)搭建,甘南網(wǎng)站營銷推廣歡迎甘南等地區(qū)企業(yè)咨詢
1:集合 Collection(單列集合) List(有序,可重復(fù)) ArrayList 底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢 線程不安全,效率高 Vector 底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢 線程安全,效率低 LinkedList 底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪快 線程不安全,效率高 Set(無序,唯一) HashSet 底層數(shù)據(jù)結(jié)構(gòu)是哈希表(實(shí)際上是一個(gè)HashMap實(shí)例)。 哈希表依賴兩個(gè)方法:hashCode()和equals() 執(zhí)行順序: 首先判斷hashCode()值是否相同 是:繼續(xù)執(zhí)行equals(),看其返回值 是true:說明元素重復(fù),不添加 是false:就直接添加到集合 否:就直接添加到集合 最終: 自動(dòng)生成hashCode()和equals()即可
LinkedHashSet 底層數(shù)據(jù)結(jié)構(gòu)由鏈表和哈希表組成。 由鏈表保證元素有序。 由哈希表保證元素唯一。 TreeSet 底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹。(是一種自平衡的二叉樹) 如何保證元素唯一性呢? 根據(jù)比較的返回值是否是0來決定 如何保證元素的排序呢? 兩種方式 自然排序(元素具備比較性) 讓元素所屬的類實(shí)現(xiàn)Comparable接口 比較器排序(集合具備比較性) 讓集合接收一個(gè)Comparator的實(shí)現(xiàn)類對(duì)象 Map(雙列集合) A:Map集合的數(shù)據(jù)結(jié)構(gòu)僅僅針對(duì)鍵有效,與值無關(guān)。 B:存儲(chǔ)的是鍵值對(duì)形式的元素,鍵唯一,值可重復(fù)。 HashMap HashMap是Java 1.2引進(jìn)的基于哈希表Map接口的一個(gè)非同步實(shí)現(xiàn)(HashMap繼承于AbstractMap,AbstractMap完成了Map接口)。 此實(shí)現(xiàn)提供所有可選的映射操作,并允許使用null值和null鍵。此類不保證映射的順序,特別是它不保證該順序恒久不變。 底層數(shù)據(jù)結(jié)構(gòu)是[數(shù)組+鏈表]組成的。線程不安全,效率高 哈希表依賴兩個(gè)方法:hashCode()和equals() 執(zhí)行順序: 首先判斷hashCode()值是否相同 是:繼續(xù)執(zhí)行equals(),看其返回值 是true:說明元素重復(fù),不添加 是false:就直接添加到集合 否:就直接添加到集合 最終: 自動(dòng)生成hashCode()和equals()即可 LinkedHashMap 底層數(shù)據(jù)結(jié)構(gòu)由雙向循環(huán)鏈表和哈希表組成。 由鏈表保證元素有序。 由哈希表保證元素唯一。 Hashtable Hashtable是基于陳舊的Dictionary類,完成了Map接口。線程安全,效率低 哈希表依賴兩個(gè)方法:hashCode()和equals() 執(zhí)行順序: 首先判斷hashCode()值是否相同 是:繼續(xù)執(zhí)行equals(),看其返回值 是true:說明元素重復(fù),不添加 是false:就直接添加到集合 否:就直接添加到集合 最終: 自動(dòng)生成hashCode()和equals()即可 TreeMap 底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹。(是一種自平衡的二叉樹) 如何保證元素唯一性呢? 根據(jù)比較的返回值是否是0來決定 如何保證元素的排序呢? 兩種方式 自然排序(元素具備比較性) 讓元素所屬的類實(shí)現(xiàn)Comparable接口 比較器排序(集合具備比較性) 讓集合接收一個(gè)Comparator的實(shí)現(xiàn)類對(duì)象
2.關(guān)于集合選取原則
是否是鍵值對(duì)象形式: 是:Map 鍵是否需要排序: 是:TreeMap 否:HashMap 不知道,就使用HashMap。 否:Collection 元素是否唯一: 是:Set 元素是否需要排序: 是:TreeSet 否:HashSet 不知道,就使用HashSet 否:List 要安全嗎: 是:Vector 否:ArrayList或者LinkedList 增刪多:LinkedList 查詢多:ArrayList 不知道,就使用ArrayList 不知道,就使用ArrayList
3:集合的常見方法及遍歷方式 Collection: add() remove() contains() iterator() size()
遍歷: 增強(qiáng)for 迭代器 |--List get() 遍歷: 普通for |--Set Map: put() remove() containskey(),containsValue() keySet() get() value() entrySet() size() 遍歷: 根據(jù)鍵找值 根據(jù)鍵值對(duì)對(duì)象分別找鍵和值
感謝各位的閱讀,以上就是“Java數(shù)據(jù)結(jié)構(gòu)List與Map的用法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Java數(shù)據(jù)結(jié)構(gòu)List與Map的用法這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
當(dāng)前題目:Java數(shù)據(jù)結(jié)構(gòu)List與Map的用法
文章轉(zhuǎn)載:http://chinadenli.net/article10/geoodo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、用戶體驗(yàn)、外貿(mào)建站、微信公眾號(hào)、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)