1.3 背包(Bag)、隊列(Queue)和棧(Stack)

不同在于刪除或者訪問對象的順序不同

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-*+

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 在經(jīng)過一次沒有準備的面試后,發(fā)現(xiàn)自己雖然寫了兩年的android代碼,基礎知識卻忘的差不多了。這是程序員的大忌,沒...
    猿來如癡閱讀 3,116評論 3 10
  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,797評論 11 349
  • 第一章:Java程序設計概述 Java和C++最大的不同在于Java采用的指針模型可以消除重寫內存和損壞數(shù)據(jù)的可能...
    loneyzhou閱讀 1,367評論 1 7
  • B 周小鯨抄完數(shù)學作業(yè)的最后一題,長長的舒了一口氣。 這時,她抬起頭來。 咔。是誰關上了開關。 天地間一下子安靜了...
    鹿琦花閱讀 295評論 0 0
  • 少平與曉霞,少安與潤葉,少安與秀連,向前對潤葉,秀對少平,惠明與莉莉……平凡的世界或不平凡的世界里都充斥著感情,或...
    某呆子閱讀 265評論 0 0

友情鏈接更多精彩內容