JAVA-初步認識-常用對象API(集合框架-LinkedList集合-練習棧堆和隊列)
一. 練習
對於面試常出現的問題進行介紹。
這裏有兩個數據結構,對兩者進行一個介紹。
隊列像管子,從左端開始進入,隨著後面的進入,先進入的被擠到右端,直到先從右端擠出。
為了符合項目中的需求,現在準備做這兩個機構,完成我們的實際需求。
有人說,采用前一節講述的removeFisrt,不是這樣來操作的,需求是指讓你做個具備特定功能的容器出來,而不是自己書寫一下這樣的操作。
我們應該描述這樣一個容器,給使用者提供一個容器對象來完成這兩種結構中的一種。
二.
現在描述一下隊列,先編寫一個類來描述一下。隊列容器有一個特點,能完成先進先出的的操作,調用玩添加方法,調用取的方法時,怎麽存進去就怎麽取出來。
當我們自己做容器比較困難的話,可以依賴於現有的容器。
截圖中有兩點需要註意:這個類的功能不是繼承來的,而是通過類中定義一個特定類型的對象,接著將特定類型對象的方法提取出來作為自己創建對象的方法。
註意:這種在內部創造特定類型對象,而不是繼承特定對象的方法,可以使得自己創建的對象,具備特定的功能,而沒有其它功能,看著比較簡潔。
添加和取出的方法,有first和last的標註,兩者不同就是隊列,相同(addLast和removeLast)就是堆棧。
最後要判斷容器中有沒有元素。存和取挺容易知道,但是這個判斷也是必須的麽?
本例中,創建的類將LinkList的方法全部封裝起來的了,封裝完後,就看不到LinkList了,看到的只能是我們自己創建的類。
其實這麽寫不太合適,應該提供一個工具類。
應該提供一個工具類,叫做隊列這麽一個類,把定義的內容都拿到這個類裏面,因為這樣是單獨的一個對象。同時,DuiLie()前面還要帶上public,這要暴露出去方便使用。
有了定義好的工具類,之前的例子可以換一種寫法。
後期1.6版本又提供了一些新的方法,在LinkList鏈表結構當中。如下圖所示。
這些方法和現有方法的功能是相同的,但是有些區別,升級是有原因的。
區別需要知道,開發的時候明確用哪個方法。
getFirst方法有個特點,如果鏈表裏面什麽也沒有,調用該方法的話,是沒有東西的。它會拋出異常,這個異常叫做沒有這個元素異常。
對於它的替代方法peak來講,沒有元素的話,返回null。空意味著我可以做判斷,
LinkList相對ArrayList要少用一些,因為我們更多是以查詢動作為主。
---恢復內容結束---
一. 練習
對於面試常出現的問題進行介紹。
這裏有兩個數據結構,對兩者進行一個介紹。
隊列像管子,從左端開始進入,隨著後面的進入,先進入的被擠到右端,直到先從右端擠出。
為了符合項目中的需求,現在準備做這兩個機構,完成我們的實際需求。
有人說,采用前一節講述的removeFisrt,
JAVA-初步認識-常用對象API(集合框架-LinkedList集合-練習棧堆和隊列)