国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

LinkedList深入學習

2019-11-15 00:52:13
字體:
來源:轉載
供稿:網友
LinkedList深入學習
  • 實現方法

首先LinkedList繼承了AbstractSequentialList實現了List<E>, Deque<E>, Cloneable, java.io.Serializable接口

LinkedList是一種常用的list實現,他是基于雙向鏈表(雙向鏈表:集合中的每一個元素都知道其前一個元素和后一個元素的位置)來實現的,在LinkedList中,用一個內部的Entity類來代表集合中的元素,元素的值賦給element屬性,Entity中的next屬性指向元素的后一個元素,Entity中的PRevious屬性指向元素的前一個元素,基于這樣的機制能夠實現快速的移動集合中的元素。

  • 構造方法

在創建LinkedList對象時候,首先創建一個element為null,next為null,previous為null的entity對象,并賦值給全局的header屬性

在執行構造器的時候,LinkedList將head的next及previous都指向header,以形成雙向鏈表所需要的閉環

  • 插入對象:add(E)

每次通過add方法增加元素的時候,要做的就是創建一個Entity對象,并將這個Entity的next指向header,previous指向head.previous,在完成自己的next、previuos的設置后,同時將位于當前元素的后一元素的previous指向自己,并將位于當前元素的前一元素的next指向自己,這樣就保持了雙向鏈表的閉環。

LinkedList的add方法不像ArrayList那樣,要考慮擴容以及復制數組的問題,但是每增加一個元素,都會創建一個新的Entity對象,并修改相鄰的兩個元素的屬性

  • 刪除對象:remove(E)

要刪除LinkedList中的一個元素,首先同樣遍歷整個集合中的元素,遍歷和尋找元素的方法和ArrayList基本相同,尋找到之后刪除就比ArrayList簡單多了。

刪除的時候,值需要直接刪除鏈表上的當前元素,并將當前元素中的element、previous、next設置為空,并不需要移動元素的位置

  • 獲取單個對象:get(index)

LinkedList的元素不是存儲在數組中的,所以他的get操作過程比ArrayList復雜,在執行get操作時,首先判斷傳入的index值是否小于0或大于等于當前LinkedList的size值,,不符合則拋出越界異常;如符合條件,判斷當前獲取的位置是否小于LinkedList值的一般,如果小于,則從頭一直找到index位置對應的元素,大于則從尾部往前查找

  • 遍歷對象:iterator()

Iterator方法由父類的AbsttractList實現,當調用此方法的時候,每次都會創建一個ListItr對象,創建時候該對象符合保存cursor位置

  • 判斷對象是否存在:contains(E)

為了判斷元素是否存在與集合中,采用的方法是遍歷所有元素,如果傳入的值為null,則找到為null的元素,傳入值為非null,則使用equals進行判斷,找到則返回true

  • 注意要點
    • LinkedList是基于雙向鏈表的機制實現的
    • LinkedList是非線程安全的
    • LinkedList執行插入元素的時候,會創建一個Entity對象,并切換相應元素的前后元素的引用,在查找元素的時候,進行遍歷鏈表,刪除元素的時候,遍歷鏈表找到刪除的元素

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上虞市| 通城县| 九江县| 塔河县| 宁夏| 常德市| 临湘市| 施甸县| 丹东市| 达州市| 宁海县| 永定县| 娄烦县| 上高县| 玉山县| 霍州市| 涪陵区| 衡阳市| 洛南县| 汕尾市| 许昌市| 定安县| 丽江市| 沾益县| 荔波县| 马龙县| 准格尔旗| 巴南区| 玉田县| 进贤县| 商河县| 桑植县| 比如县| 克拉玛依市| 普洱| 巍山| 象州县| 安西县| 抚州市| 郓城县| 定日县|