js實(shí)現(xiàn)ArrayList功能附實(shí)例代碼

字號(hào):


    1.ArrayList方法摘要
    構(gòu)造方法摘要
    ArrayList()
    構(gòu)造一個(gè)初始容量為 10 的空列表。
    ArrayList(Collection<? extends E> c)
    構(gòu)造一個(gè)包含指定 collection 的元素的列表,這些元素是按照該 collection 的迭代器返回它們的順序排列的。
    ArrayList(int initialCapacity)
    構(gòu)造一個(gè)具有指定初始容量的空列表。
    方法摘要
    boolean add(E e)
    將指定的元素添加到此列表的尾部。
    void add(int index, E element)
    將指定的元素插入此列表中的指定位置。
    boolean addAll(Collection<? extends E> c)
    按照指定 collection 的迭代器所返回的元素順序,將該 collection 中的所有元素添加到此列表的尾部。
    boolean addAll(int index, Collection<? extends E> c)
    從指定的位置開(kāi)始,將指定 collection 中的所有元素插入到此列表中。
    void clear()
    移除此列表中的所有元素。
    Object clone()
    返回此 ArrayList 實(shí)例的淺表副本。
    boolean contains(Object o)
    如果此列表中包含指定的元素,則返回 true。
    void ensureCapacity(int minCapacity)
    如有必要,增加此 ArrayList 實(shí)例的容量,以確保它至少能夠容納最小容量參數(shù)所指定的元素?cái)?shù)。
    E get(int index)
    返回此列表中指定位置上的元素。
    int indexOf(Object o)
    返回此列表中首次出現(xiàn)的指定元素的索引,或如果此列表不包含元素,則返回 -1。
    boolean isEmpty()
    如果此列表中沒(méi)有元素,則返回 true
    int lastIndexOf(Object o)
    返回此列表中最后一次出現(xiàn)的指定元素的索引,或如果此列表不包含索引,則返回 -1。
    E remove(int index)
    移除此列表中指定位置上的元素。
    boolean remove(Object o)
    移除此列表中首次出現(xiàn)的指定元素(如果存在)。
    protected void removeRange(int fromIndex, int toIndex)
    移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之間的所有元素。
    E set(int index, E element)
    用指定的元素替代此列表中指定位置上的元素。
    int size()
    返回此列表中的元素?cái)?shù)。
    Object[] toArray()
    按適當(dāng)順序(從第一個(gè)到最后一個(gè)元素)返回包含此列表中所有元素的數(shù)組。
    <T> T[] toArray(T[] a)
    按適當(dāng)順序(從第一個(gè)到最后一個(gè)元素)返回包含此列表中所有元素的數(shù)組;返回?cái)?shù)組的運(yùn)行時(shí)類(lèi)型是指定數(shù)組的運(yùn)行時(shí)類(lèi)型。
    void trimToSize()
    將此 ArrayList 實(shí)例的容量調(diào)整為列表的當(dāng)前大小。
    2.js實(shí)現(xiàn)部分功能
    代碼如下:
    <html>
    <script type="text/javascript" src="json.js"></script>
    <head>
    <script type="text/javascript">
    function ArrayList(){
    this.arr=[],
    this.size=function(){
    return this.arr.length;
    },
    this.add=function(){
    if(arguments.length==1){
    this.arr.push(arguments[0]);
    }else if(arguments.length>=2){
    var deleteItem=this.arr[arguments[0]];
    this.arr.splice(arguments[0],1,arguments[1],deleteItem)
    }
    return this;
    },
    this.get=function(index){
    return this.arr[index];
    },
    this.removeIndex=function(index){
    this.arr.splice(index,1);
    },
    this.removeObj=function(obj){
    this.removeIndex(this.indexOf(obj));
    },
    this.indexOf=function(obj){
    for(var i=0;i<this.arr.length;i++){
    if (this.arr[i]===obj) {
    return i;
    };
    }
    return -1;
    },
    this.isEmpty=function(){
    return this.arr.length==0;
    },
    this.clear=function(){
    this.arr=[];
    },
    this.contains=function(obj){
    return this.indexOf(obj)!=-1;
    }
    };
    //新建一個(gè)List
    var list=new ArrayList();
    //增加一個(gè)元素
    list.add("0").add("1").add("2").add("3");
    //增加指定位置
    list.add(2,"22222222222");
    //刪除指定元素
    list.removeObj("3");
    //刪除指定位置元素
    list.removeIndex(0);
    for(var i=0;i<list.size();i++){
    document.writeln(list.get(i));
    }
    document.writeln(list.contains("2"))
    </script>
    </head>
    <body>
    </body>
    </html>