ArrayList 和 LinkedList 的自定义实现
生活随笔
收集整理的這篇文章主要介紹了
ArrayList 和 LinkedList 的自定义实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 一、ArrayList
- 二、LinkedList
- 總結(jié)
前言
??????下面給出 ArrayList 和 LinkedList 的自定義實現(xiàn),僅作為練習。
一、ArrayList
??????自己仿照著寫一個 SimpleArrayList 實現(xiàn)類,代碼也比較簡單,故不做說明了,其中 SimpleItr 內(nèi)部類實現(xiàn)了 Iterator 接口。如下:
public class SimpleArrayList<T> implements Iterable<T> {private static final int DEFAULT_CAPACITY=10;private int capacity=DEFAULT_CAPACITY;private int Size;private T[] Items;public SimpleArrayList(){doClear();}public void clear(){doClear();}private void doClear(){Size=0;ensureCapacity(DEFAULT_CAPACITY);}public int size(){return Size;}public boolean isEmpty(){return size()==0;}public void trimToSize(){ensureCapacity(size());}public T get(int idx){if(idx<0||idx>=size())throw new ArrayIndexOutOfBoundsException();return Items[idx];}public void set(int idx,T newValue){if(idx<0||idx>=size())throw new ArrayIndexOutOfBoundsException();Items[idx]=newValue;}public void ensureCapacity(int newCapacity){if(newCapacity<Size)return;T[] old=Items;Items=(T[])new Object[newCapacity];for(int i=0;i<size();i++)Items[i]=old[i];}public void add(T x){add(size(),x);}public void add(int idx,T x){if(Items.length==size())//Items.length為數(shù)組容量ensureCapacity(size()*2+1);// +1 是為了避免數(shù)組為空時無法添加元素for(int i=size()-1;i>idx;i--)Items[i]=Items[i-1];Items[idx]=x;Size+=1;}public void remove(int idx){if(idx<0||idx>=size())throw new ArrayIndexOutOfBoundsException();for(int i=idx;i<size()-1;i++)Items[i]=Items[i+1];Size-=1;}public Iterator<T> iterator(){return new SimpleItr();}private class SimpleItr implements Iterator<T>{//內(nèi)部類private int current=0;//當前位置(從0開始)public boolean hasNext(){return current<size();}public T next(){if(!hasNext())throw new NoSuchElementException();return Items[current++];}public void remove(){SimpleArrayList.this.remove(--current);}}}二、LinkedList
??????LinkedList 內(nèi)部采用雙鏈表來實現(xiàn),如果操作發(fā)生在已知的情況下(端點或由迭代器指定的位置上),從而保證每個操作花費常數(shù)時間。
??????1,SimpleLinkedList 類,包含雙鏈表和一些方法。
??????2,Node 靜態(tài)內(nèi)部類。實現(xiàn)鏈表中的節(jié)點。
??????3,SimpleItr 內(nèi)部類。實現(xiàn)了 Iterator 接口。
總結(jié)
??????完。
總結(jié)
以上是生活随笔為你收集整理的ArrayList 和 LinkedList 的自定义实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 集合中的方法性能分析
- 下一篇: FFTW、Eigen库在VisualSt