不同在于刪除或者訪問(wèn)對(duì)象的順序不同

1.1 泛型
集合類的抽象數(shù)據(jù)類型的一個(gè)關(guān)鍵特性是我們應(yīng)該可以用它們存儲(chǔ)任意類型的數(shù)據(jù)。
Java一種機(jī)制可以實(shí)現(xiàn),它叫做泛型,也叫做參數(shù)化類型。
1.2 自動(dòng)裝箱

1.4 背包
一種不支持從中刪除元素的集合數(shù)據(jù)類型
它的目的就是幫助用例收集元素并迭代遍歷所有收集到的元素。
使用Bag可以說(shuō)明元素的處理順序不重要。
1.6 下壓棧,簡(jiǎn)稱棧
使用foreach語(yǔ)句迭代遍歷棧中元素的時(shí)候,元素的處理順序和它們被壓入的順序正好相反。
2.集合類數(shù)據(jù)類型的實(shí)現(xiàn)
2.4 對(duì)象游離
保存一個(gè)不需要的對(duì)象的引用稱為游離。(棧的pop)
解決:將被彈出的數(shù)組元素的值設(shè)為null即可,這將覆蓋無(wú)用的引用并使系統(tǒng)可以在用例使用完被彈出的元素后回收它的內(nèi)存。
2.5 迭代




3.鏈表
定義:鏈表是一種遞歸的數(shù)據(jù)結(jié)構(gòu),它或者為空(null),或者是指向一個(gè)結(jié)點(diǎn)(node)的引用,該結(jié)點(diǎn)含有一個(gè)泛型的元素和一個(gè)指向另一條鏈表的引用
鏈表比數(shù)組插入元素或是刪除元素都更方便
實(shí)現(xiàn)任意插入和刪除操作的標(biāo)準(zhǔn)解決方案是雙向鏈表
3.8 棧的實(shí)現(xiàn)
棧是由鏈表實(shí)現(xiàn)
鏈表的使用達(dá)到了最優(yōu)的設(shè)計(jì)目標(biāo):
它可以處理任意類型的數(shù)據(jù)
所需的空間總是和集合的大小成正比
操作所需的時(shí)間總是和集合的大小無(wú)關(guān)
3.9 隊(duì)列的實(shí)現(xiàn)



3.10 背包的實(shí)現(xiàn)

總結(jié)
數(shù)據(jù)類型的值就是一組對(duì)象的集合:背包、隊(duì)列、棧(三種基礎(chǔ)數(shù)據(jù)類型)
兩種表示對(duì)象集合的方式:數(shù)組和鏈表

答疑
為什么Java不允許泛型數(shù)組?
數(shù)組的協(xié)變性(covariant)是指:
如果類Base是類Sub的基類,那么Base[]就是Sub[]的基類。
而泛型是不可變的(invariant),List不會(huì)是List的基類,更不會(huì)是它的子類。
數(shù)組是具體化的(reified),而泛型在運(yùn)行時(shí)是被擦除的(erasure)。
數(shù)組是在運(yùn)行時(shí)才去判斷數(shù)組元素的類型約束,
而泛型正好相反,在運(yùn)行時(shí),泛型的類型信息是會(huì)被擦除的,只有編譯的時(shí)候才會(huì)對(duì)類型進(jìn)行強(qiáng)化。
前序表達(dá)式():即從右至左取數(shù),直到取出一個(gè)運(yùn)算符,將剛?cè)〕龅木o挨著運(yùn)算符的兩個(gè)操作數(shù)按運(yùn)算符進(jìn)行計(jì)算,結(jié)果回填至運(yùn)算符。重復(fù)該步驟,直到最后只剩下一個(gè)字符串則剩下的字符串即為結(jié)果。
中序表達(dá)式:我們平時(shí)用的
后序表達(dá)式:字符串掃描方式正好和前序相反,是從左往右掃描,規(guī)則類似。
前序表達(dá)式
+/*23-21*3-41
中序表達(dá)式
2*3/(2-1)+3*(4-1)
后序表達(dá)式
23*21-/341-*+