軟件公司網(wǎng)站建設(shè)安徽網(wǎng)站推廣公司
Collection
?? ?|--List:列表。
?? ??? ??? ?特點(diǎn):
?? ??? ??? ?3,它可以存儲(chǔ)重復(fù)元素。?
?? ??? ??? ?
?? ??? ??? ?常見子類對(duì)象:記住:具體的子類對(duì)象,我們要學(xué)習(xí)應(yīng)該是該對(duì)象的特有的數(shù)據(jù)結(jié)構(gòu),以及相關(guān)的特點(diǎn)。
?? ??? ??? ?|--Vector:jdk1.0就存在了。底層是數(shù)組結(jié)構(gòu)的。可變長(zhǎng)度數(shù)組,
?? ??? ??? ??? ??? ??? ?原理:一旦原數(shù)組長(zhǎng)度不夠,會(huì)創(chuàng)建新數(shù)組,將原數(shù)組的元素復(fù)制到新數(shù)組中,并將新元素添加到新數(shù)組中。
?? ??? ??? ??? ??? ??? ?Vector是同步的。
?? ??? ??? ?|--ArrayList:底層是數(shù)組結(jié)構(gòu),也是支持長(zhǎng)度可變數(shù)組的。是不同步的。替代了Vector.因?yàn)樾矢摺?查詢效率很高。 但是增刪的效率很低。
?? ??? ??? ?|--LinkedList:底層是鏈接列表結(jié)構(gòu),簡(jiǎn)稱鏈表結(jié)構(gòu)。是不同步的。這個(gè)中結(jié)構(gòu)的好處:對(duì)元素的增刪非常效率很高。 查詢的效率很低。
?? ??? ??? ?
?? ?|--Set:集:中的方法和Collection一致,只要重點(diǎn)注意它的子類對(duì)象即可。取出元素只能使用迭代器。
?? ??? ??? ?特點(diǎn):
?? ??? ??? ?1,不包含重復(fù)元素。(最大的特點(diǎn))
?? ??? ??? ?2,這個(gè)集合存入元素的順序和取出元素的順序不一定一致。(具體的容器對(duì)象數(shù)據(jù)結(jié)構(gòu)不同,順序也有不同)
?? ??? ??? ?|--HashSet:底層數(shù)據(jù)結(jié)構(gòu)是哈希表,不保證順序,是不同步的。
?? ??? ??? ??? ??? ??? ?哈希表:提供數(shù)組的查詢效率而出現(xiàn)的。
?? ??? ??? ??? ??? ??? ??? ??? ?將要存儲(chǔ)的元素先通過哈希算法算出一個(gè)哈希值來標(biāo)識(shí)存儲(chǔ)的位置,代表著元素。
?? ??? ??? ??? ??? ??? ??? ??? ?要找元素時(shí),先將該元素通過哈希算法算出哈希值,在通過哈希值到哈希表中去查找。
?? ??? ??? ??? ??? ??? ??? ??? ?特點(diǎn):
?? ??? ??? ??? ??? ??? ??? ??? ?1,不關(guān)系元素的順序。
?? ??? ??? ??? ??? ??? ??? ??? ?2,提高了查詢效率。
?? ??? ??? ??? ??? ??? ??? ??? ?3,不可能出現(xiàn)重復(fù)元素,因?yàn)楣V刀疾煌<词瓜嗤?#xff0c;會(huì)再次判斷兩個(gè)元素的equals,內(nèi)容是否相同。
?? ??? ??? ??? ??? ??? ??? ??? ??? ?如果內(nèi)容也相同,不存,如果內(nèi)容不同,存儲(chǔ)。
?? ??? ??? ??? ??? ??? ??? ??? ?所以哈希表要保證元素的唯一性,必須要依賴于兩個(gè)方法。
?? ??? ??? ??? ??? ??? ??? ??? ?1,hashCode
?? ??? ??? ??? ??? ??? ??? ??? ?2,equals?? ?
?? ??? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ?|--TreeSet:可以給Set集合中的元素進(jìn)行指定順序的排序。非同步的。?
?? ??? ??? ??? ??? ??? ?默認(rèn)情況下,是通過元素的自然順序排的序。
?? ??? ??? ??? ??? ??? ?它保證元素唯一性的依據(jù)是看比較方法的返回結(jié)果是否是0.是0.就視為元素相同。不存。
?? ??? ??? ??? ??? ??? ?TreeSet排序的方式一:讓元素自身具備比較性,需要實(shí)現(xiàn)Comparable接口,覆蓋compareTo方法。
?? ??? ??? ??? ??? ??? ?這種比較方式成為自然順序排序。
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ?如果元素自身不具備比較性或者具備的比較性(自然順序)不是所需要的。
?? ??? ??? ??? ??? ??? ?這時(shí)只能用第二種方式 。
?? ??? ??? ??? ??? ??? ?TreeSet排序的方式二:讓容器自身具備比較性。容器一初始化就具備了比較功能。
?? ??? ??? ??? ??? ??? ?因?yàn)槿萜鲿r(shí)在對(duì)象構(gòu)造時(shí)完成的。通過查閱,有一個(gè)構(gòu)造方法TreeSet(Comparator).
?? ??? ??? ??? ??? ??? ?在容器初始化時(shí)可以指定一個(gè)比較器。?
?? ??? ??? ??? ??? ??? ?需要實(shí)現(xiàn)Comparator接口,覆蓋compare方法即可。
?? ?|--List:列表。
?? ??? ??? ?特點(diǎn):
?? ??? ??? ?1,有序(存儲(chǔ)元素的順序和取出元素的順序一致)
?? ??? ???? 2,該集合中的元素都有索引,所以可以通過索引(角標(biāo))來訪問元素。??? ??? ??? ?3,它可以存儲(chǔ)重復(fù)元素。?
?? ??? ??? ?
?? ??? ??? ?常見子類對(duì)象:記住:具體的子類對(duì)象,我們要學(xué)習(xí)應(yīng)該是該對(duì)象的特有的數(shù)據(jù)結(jié)構(gòu),以及相關(guān)的特點(diǎn)。
?? ??? ??? ?|--Vector:jdk1.0就存在了。底層是數(shù)組結(jié)構(gòu)的。可變長(zhǎng)度數(shù)組,
?? ??? ??? ??? ??? ??? ?原理:一旦原數(shù)組長(zhǎng)度不夠,會(huì)創(chuàng)建新數(shù)組,將原數(shù)組的元素復(fù)制到新數(shù)組中,并將新元素添加到新數(shù)組中。
?? ??? ??? ??? ??? ??? ?Vector是同步的。
?? ??? ??? ?|--ArrayList:底層是數(shù)組結(jié)構(gòu),也是支持長(zhǎng)度可變數(shù)組的。是不同步的。替代了Vector.因?yàn)樾矢摺?查詢效率很高。 但是增刪的效率很低。
?? ??? ??? ?|--LinkedList:底層是鏈接列表結(jié)構(gòu),簡(jiǎn)稱鏈表結(jié)構(gòu)。是不同步的。這個(gè)中結(jié)構(gòu)的好處:對(duì)元素的增刪非常效率很高。 查詢的效率很低。
?? ??? ??? ?
?? ?|--Set:集:中的方法和Collection一致,只要重點(diǎn)注意它的子類對(duì)象即可。取出元素只能使用迭代器。
?? ??? ??? ?特點(diǎn):
?? ??? ??? ?1,不包含重復(fù)元素。(最大的特點(diǎn))
?? ??? ??? ?2,這個(gè)集合存入元素的順序和取出元素的順序不一定一致。(具體的容器對(duì)象數(shù)據(jù)結(jié)構(gòu)不同,順序也有不同)
?? ??? ??? ?|--HashSet:底層數(shù)據(jù)結(jié)構(gòu)是哈希表,不保證順序,是不同步的。
?? ??? ??? ??? ??? ??? ?哈希表:提供數(shù)組的查詢效率而出現(xiàn)的。
?? ??? ??? ??? ??? ??? ??? ??? ?將要存儲(chǔ)的元素先通過哈希算法算出一個(gè)哈希值來標(biāo)識(shí)存儲(chǔ)的位置,代表著元素。
?? ??? ??? ??? ??? ??? ??? ??? ?要找元素時(shí),先將該元素通過哈希算法算出哈希值,在通過哈希值到哈希表中去查找。
?? ??? ??? ??? ??? ??? ??? ??? ?特點(diǎn):
?? ??? ??? ??? ??? ??? ??? ??? ?1,不關(guān)系元素的順序。
?? ??? ??? ??? ??? ??? ??? ??? ?2,提高了查詢效率。
?? ??? ??? ??? ??? ??? ??? ??? ?3,不可能出現(xiàn)重復(fù)元素,因?yàn)楣V刀疾煌<词瓜嗤?#xff0c;會(huì)再次判斷兩個(gè)元素的equals,內(nèi)容是否相同。
?? ??? ??? ??? ??? ??? ??? ??? ??? ?如果內(nèi)容也相同,不存,如果內(nèi)容不同,存儲(chǔ)。
?? ??? ??? ??? ??? ??? ??? ??? ?所以哈希表要保證元素的唯一性,必須要依賴于兩個(gè)方法。
?? ??? ??? ??? ??? ??? ??? ??? ?1,hashCode
?? ??? ??? ??? ??? ??? ??? ??? ?2,equals?? ?
?? ??? ??? ??? ??? ??? ??? ??? ?
?? ??? ??? ?|--TreeSet:可以給Set集合中的元素進(jìn)行指定順序的排序。非同步的。?
?? ??? ??? ??? ??? ??? ?默認(rèn)情況下,是通過元素的自然順序排的序。
?? ??? ??? ??? ??? ??? ?它保證元素唯一性的依據(jù)是看比較方法的返回結(jié)果是否是0.是0.就視為元素相同。不存。
?? ??? ??? ??? ??? ??? ?TreeSet排序的方式一:讓元素自身具備比較性,需要實(shí)現(xiàn)Comparable接口,覆蓋compareTo方法。
?? ??? ??? ??? ??? ??? ?這種比較方式成為自然順序排序。
?? ??? ??? ??? ??? ??? ?
?? ??? ??? ??? ??? ??? ?如果元素自身不具備比較性或者具備的比較性(自然順序)不是所需要的。
?? ??? ??? ??? ??? ??? ?這時(shí)只能用第二種方式 。
?? ??? ??? ??? ??? ??? ?TreeSet排序的方式二:讓容器自身具備比較性。容器一初始化就具備了比較功能。
?? ??? ??? ??? ??? ??? ?因?yàn)槿萜鲿r(shí)在對(duì)象構(gòu)造時(shí)完成的。通過查閱,有一個(gè)構(gòu)造方法TreeSet(Comparator).
?? ??? ??? ??? ??? ??? ?在容器初始化時(shí)可以指定一個(gè)比較器。?
?? ??? ??? ??? ??? ??? ?需要實(shí)現(xiàn)Comparator接口,覆蓋compare方法即可。
?? ??? ??? ??? ??? ??? ?所以這種方式成為比較器排序。?
LinkedHashSet內(nèi)部使用散列以加快查詢速度,同時(shí)使用鏈表維護(hù)元素的次序.?
【什么時(shí)候選擇List?,什么時(shí)候選擇Set?呢?】
當(dāng)存入的的對(duì)象有重復(fù)時(shí),用List,沒有重復(fù)元素時(shí),用Set。