1. 程式人生 > >JAVA-初步認識-常用對象API(集合框架-LinkedList集合-練習棧堆和隊列)

JAVA-初步認識-常用對象API(集合框架-LinkedList集合-練習棧堆和隊列)

問題 add 是我 好的 寫法 個數 隨著 .com 全部

一. 練習

對於面試常出現的問題進行介紹。

技術分享圖片

這裏有兩個數據結構,對兩者進行一個介紹。

隊列像管子,從左端開始進入,隨著後面的進入,先進入的被擠到右端,直到先從右端擠出。

為了符合項目中的需求,現在準備做這兩個機構,完成我們的實際需求。

有人說,采用前一節講述的removeFisrt,不是這樣來操作的,需求是指讓你做個具備特定功能的容器出來,而不是自己書寫一下這樣的操作。

我們應該描述這樣一個容器,給使用者提供一個容器對象來完成這兩種結構中的一種。

二.

現在描述一下隊列,先編寫一個類來描述一下。隊列容器有一個特點,能完成先進先出的的操作,調用玩添加方法,調用取的方法時,怎麽存進去就怎麽取出來。

當我們自己做容器比較困難的話,可以依賴於現有的容器。

技術分享圖片

技術分享圖片

截圖中有兩點需要註意:這個類的功能不是繼承來的,而是通過類中定義一個特定類型的對象,接著將特定類型對象的方法提取出來作為自己創建對象的方法。

註意:這種在內部創造特定類型對象,而不是繼承特定對象的方法,可以使得自己創建的對象,具備特定的功能,而沒有其它功能,看著比較簡潔。

添加和取出的方法,有first和last的標註,兩者不同就是隊列,相同(addLast和removeLast)就是堆棧。

最後要判斷容器中有沒有元素。存和取挺容易知道,但是這個判斷也是必須的麽?

本例中,創建的類將LinkList的方法全部封裝起來的了,封裝完後,就看不到LinkList了,看到的只能是我們自己創建的類。

其實這麽寫不太合適,應該提供一個工具類。

技術分享圖片

技術分享圖片

應該提供一個工具類,叫做隊列這麽一個類,把定義的內容都拿到這個類裏面,因為這樣是單獨的一個對象。同時,DuiLie()前面還要帶上public,這要暴露出去方便使用。

有了定義好的工具類,之前的例子可以換一種寫法。

技術分享圖片

後期1.6版本又提供了一些新的方法,在LinkList鏈表結構當中。如下圖所示。

技術分享圖片

這些方法和現有方法的功能是相同的,但是有些區別,升級是有原因的。

區別需要知道,開發的時候明確用哪個方法。

技術分享圖片

getFirst方法有個特點,如果鏈表裏面什麽也沒有,調用該方法的話,是沒有東西的。它會拋出異常,這個異常叫做沒有這個元素異常。

技術分享圖片

技術分享圖片

對於它的替代方法peak來講,沒有元素的話,返回null。空意味著我可以做判斷,

技術分享圖片

技術分享圖片

LinkList相對ArrayList要少用一些,因為我們更多是以查詢動作為主。

---恢復內容結束---

一. 練習

對於面試常出現的問題進行介紹。

技術分享圖片

這裏有兩個數據結構,對兩者進行一個介紹。

隊列像管子,從左端開始進入,隨著後面的進入,先進入的被擠到右端,直到先從右端擠出。

為了符合項目中的需求,現在準備做這兩個機構,完成我們的實際需求。

有人說,采用前一節講述的removeFisrt,

JAVA-初步認識-常用對象API(集合框架-LinkedList集合-練習棧堆和隊列)