容器:裝其他東西的

Java API 所提供的一系列類(lèi)的實(shí)例,用于在程序中存放對(duì)象。

1136:一個(gè)圖 ?一個(gè)類(lèi) 三個(gè)知識(shí)點(diǎn)和6個(gè)接口(TreeSet TreeMap)
java.util ?utili 工具包
接口定義,定義標(biāo)準(zhǔn)。
Collection集合接口 ?Set集合接口 無(wú)順序 不能重復(fù) ?List集合 有順序 能重復(fù)(equals返回為true)。

重復(fù)指的是元素之間相互equals。

contains,兩個(gè)元素equals,而不是 == ?這是引用相等。

ArrayList 不指定類(lèi)型時(shí) ?可以添加多個(gè)類(lèi)。
父類(lèi)引用訪問(wèn)子類(lèi)對(duì)象,無(wú)法訪問(wèn)子類(lèi)對(duì)象私有的方法。(控制反轉(zhuǎn))

remove時(shí)會(huì)和集合內(nèi)元素 進(jìn)行 equals (重寫(xiě)equals,不是指向同一引用)比較 ,若為true 則移除。重寫(xiě)equals 就需要重寫(xiě)hashcode

比較對(duì)象主要用的是equals方法,有的時(shí)候需要HashCode方法,對(duì)象在Map接口作為索引,作為Key,使用HashCode方法進(jìn)行比較,效率更高。重寫(xiě)Equals則重寫(xiě)hashCode。相等的對(duì)象應(yīng)具有相同的hashCode方法。hashCode非常適合做索引。
Iterator: 迭代器

所有實(shí)現(xiàn)了Collection接口的容器類(lèi)都有一個(gè)iterator方法用以返回一個(gè)實(shí)現(xiàn)了Iterator接口的對(duì)象。Iterator對(duì)象稱(chēng)作迭代器(不可反復(fù)遍歷),用以方便的實(shí)現(xiàn)對(duì)容器內(nèi)元素的遍歷操作。統(tǒng)一實(shí)現(xiàn)不同集合類(lèi)的遍歷操作。

List是對(duì)外提供的一個(gè)接口,容器。ArrayList是使用數(shù)組作為底層存儲(chǔ)(方便遍歷)。LinkedList以鏈表作為底層存儲(chǔ)元素(方便添加)。
多態(tài)存在三個(gè)必要的條件:
要有繼承。要有重寫(xiě)。要有父類(lèi)引用指向子類(lèi)對(duì)象。


Iterator對(duì)象的remove方法是在迭代過(guò)程中刪除元素的唯一的安全方法。
Iterator循環(huán)遍歷過(guò)程中,執(zhí)行了鎖定。不允許其他對(duì)象進(jìn)行操作。


遍歷數(shù)組的時(shí)候 不能方便的訪問(wèn)下標(biāo)值;
訪問(wèn)集合時(shí),與使用Iterator相比 不能方便的刪除集合內(nèi)容,在內(nèi)部也是調(diào)用Iterator方法。

實(shí)現(xiàn)Set接口的容器類(lèi)中的元素必須是沒(méi)有順序的,而且不可以重復(fù)。

重寫(xiě)equals方法,重寫(xiě)hashCode方法。重復(fù)的元素不能填寫(xiě)。

retainAll ?集合之間求交集。無(wú)序。

list非常像數(shù)組??梢噪S便更改容器大小,但是數(shù)組不行(需要多次copy)。有順序,可以重復(fù)。List容器中的元素對(duì)應(yīng)一個(gè)整數(shù)型的序號(hào)記載其在容器中的位置,可以根據(jù)序號(hào)存取容器中的元素。
set方法返回的是舊元素。 ?indexOf 重寫(xiě)equals ?重寫(xiě)hashCode


Java.util.Collections提供了一些靜態(tài)方法實(shí)現(xiàn)了基于List容器的一些常用算法。
void sort(List) 對(duì)List容器內(nèi)的元素排序

Collections.shuffle()? Collections.sort()? Collections.reverse() Collections.binarySearch() 靜態(tài)方法。
Comparable:
通過(guò)接口只能看見(jiàn)對(duì)象的某一點(diǎn)。



Array讀快改慢 ?Linked改快讀慢 Hash兩者之間

鍵值不能重復(fù)(equals ?hashCode),HashMap TreeMap
put(key,newvalue) ?返回的是 oldValue

autoBoxing_UnBoxing ?自動(dòng)打包

自動(dòng)將基礎(chǔ)類(lèi)型轉(zhuǎn)換為對(duì)象 -- 打包 ,將對(duì)象轉(zhuǎn)換為基礎(chǔ)類(lèi)型 -- 解包



泛型: Generic
之前類(lèi)型不明確,裝入集合的類(lèi)型都被當(dāng)作Object對(duì)待,從前失去自己的實(shí)際類(lèi)型。
從集合中取出時(shí)往往需要轉(zhuǎn)型,效率低,容易產(chǎn)生錯(cuò)誤。
在定義集合的時(shí)候 同時(shí)定義集合中對(duì)象的類(lèi)型,增強(qiáng)程序的可讀性和穩(wěn)定性。問(wèn)題越提前越好,盡量不要再運(yùn)行時(shí)出問(wèn)題。




使用到集合盡量使用泛型。
總結(jié)

泛型的可讀性和穩(wěn)定性