不同在于刪除或者訪問對象的順序不同
1.1 泛型
集合類的抽象數(shù)據(jù)類型的一個關鍵特性是我們應該可以用它們存儲任意類型的數(shù)據(jù)笋婿。
Java一種機制可以實現(xiàn)嵌屎,它叫做泛型推正,也叫做參數(shù)化類型。
1.2 自動裝箱
1.4 背包
一種不支持從中刪除元素的集合數(shù)據(jù)類型
它的目的就是幫助用例收集元素并迭代遍歷所有收集到的元素宝惰。
使用Bag可以說明元素的處理順序不重要植榕。
1.6 下壓棧,簡稱棧
使用foreach語句迭代遍歷棧中元素的時候尼夺,元素的處理順序和它們被壓入的順序正好相反尊残。
2.集合類數(shù)據(jù)類型的實現(xiàn)
2.4 對象游離
保存一個不需要的對象的引用稱為游離炒瘸。(棧的pop)
解決:將被彈出的數(shù)組元素的值設為null即可,這將覆蓋無用的引用并使系統(tǒng)可以在用例使用完被彈出的元素后回收它的內存寝衫。
2.5 迭代
3.鏈表
定義:鏈表是一種遞歸的數(shù)據(jù)結構顷扩,它或者為空(null),或者是指向一個結點(node)的引用慰毅,該結點含有一個泛型的元素和一個指向另一條鏈表的引用
鏈表比數(shù)組插入元素或是刪除元素都更方便
實現(xiàn)任意插入和刪除操作的標準解決方案是雙向鏈表
3.8 棧的實現(xiàn)
棧是由鏈表實現(xiàn)
鏈表的使用達到了最優(yōu)的設計目標:
它可以處理任意類型的數(shù)據(jù)
所需的空間總是和集合的大小成正比
操作所需的時間總是和集合的大小無關
3.9 隊列的實現(xiàn)
3.10 背包的實現(xiàn)
總結
數(shù)據(jù)類型的值就是一組對象的集合:背包隘截、隊列、棧(三種基礎數(shù)據(jù)類型)
兩種表示對象集合的方式:數(shù)組和鏈表
答疑
為什么Java不允許泛型數(shù)組汹胃?
數(shù)組的協(xié)變性(covariant)是指:
如果類Base是類Sub的基類婶芭,那么Base[]就是Sub[]的基類。
而泛型是不可變的(invariant)着饥,List不會是List的基類犀农,更不會是它的子類。
數(shù)組是具體化的(reified)宰掉,而泛型在運行時是被擦除的(erasure)呵哨。
數(shù)組是在運行時才去判斷數(shù)組元素的類型約束,
而泛型正好相反贵扰,在運行時仇穗,泛型的類型信息是會被擦除的,只有編譯的時候才會對類型進行強化戚绕。
前序表達式():即從右至左取數(shù)纹坐,直到取出一個運算符,將剛取出的緊挨著運算符的兩個操作數(shù)按運算符進行計算舞丛,結果回填至運算符耘子。重復該步驟,直到最后只剩下一個字符串則剩下的字符串即為結果球切。
中序表達式:我們平時用的
后序表達式:字符串掃描方式正好和前序相反谷誓,是從左往右掃描,規(guī)則類似吨凑。
前序表達式
+/*23-21*3-41
中序表達式
2*3/(2-1)+3*(4-1)
后序表達式
23*21-/341-*+