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

不同在于刪除或者訪問(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-*+

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

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容