隨筆 - 22, 文章 - 0, 評論 - 1, 引用 - 0
          數據加載中……

          LinkedList的源碼閱讀筆記

          1,基本的鏈表實現,內部類Node表示存儲節點。
          2,移除某個節點時,會手動將節點的item屬性設為null,以便GC更好的收集。
          3,addAll()方法也并沒有調用入參的集合的迭代器,而是將其toArray()后,循環這個數組。
          4,調用clear()時,為了防止某個迭代器還在引用,也為了GC的回收,將每個節點的內容及前后引用都手動設置為null。
          5,定位某個位置的節點時,根據位置距離頭尾的距離來決定從first還是last節點開始查找。
          6,LinkedList在內部覆蓋了listIterator(),但是沒有覆蓋iterator(),所以LinkedList.iterator()調用過程如下:
          LinkedList.iterator() -> AbstractSequentialList.iterator() -> AbstractList.listIterator() -> LinkedList.listIterator(int index)
          最終返回的是LinkedList.ListItr對象實例,稍微有點繞,有興趣的朋友可以打斷點試試。
          7,如果沒有ListIterator.nextIndex(),里面其實可以不用設定nextIndex變量來記錄當前位置的。
          8,序列化時會將size和“順序排列的元素流”依次跟在“默認ArrayList對象流”后面。

          posted on 2012-09-08 03:11 王星游 閱讀(271) 評論(0)  編輯  收藏 所屬分類: java

          主站蜘蛛池模板: 彩票| 开平市| 汕尾市| 夏河县| 江华| 清水县| 漳州市| 凉山| 平阳县| 工布江达县| 双柏县| 江源县| 响水县| 上蔡县| 新乡市| 墨脱县| 佛坪县| 年辖:市辖区| 容城县| 历史| 纳雍县| 古浪县| 新野县| 象山县| 滦南县| 类乌齐县| 桂阳县| 临泉县| 宜川县| 和林格尔县| 定襄县| 合川市| 遵化市| 龙山县| 龙里县| 泊头市| 吴江市| 靖宇县| 四平市| 苏尼特左旗| 平南县|