封裝一個簡單的動態數組

來源:互聯網
上載者:User

標籤:java   imp   package   vat   ring   ==   buffer   update   inter   

package com.immoc;import java.util.ArrayList;import java.util.List;/** * 實現動態數組 * */public class Array <E> {    private E[]data;;    private int size;    public Array(int capacity){        data = (E[]) new  Object[capacity];        size = 0;    }    public Array(){        this(10);    }    public int getSize(){        return size;    }    public int getCapacity(){      return data.length;    }    public boolean isEmpty(){        return size==0;    }    //在數組的最後添加一個元素    public void addList(E e){        add(size, e);    }    //在數組的最後加入一個元素    public void addFirst(E e){        add(0, e);    }    //數組中插入一個元素    public void add(int index,E val){        if(index<0||index>size){throw new IllegalArgumentException("傳入的參數超過數組的長度");}        if(size==data.length){resize(2*getCapacity());}        for(int i = size - 1;i >= index;i --){            data[i + 1] = data[i];        }        data[index]=val;        size++;    }    //查詢某個元素    public E query(int index){        if(index < 0 || index >= size){throw new NullPointerException("null");}        return data[index];    }    //修改某個元素    public void update(int index, E val){        if(index < 0 || index >= size){throw new NullPointerException("null");}        data[index]  = val;    }    //toString方法    @Override    public String toString(){        StringBuffer sb = new StringBuffer();        sb.append("數組的長度:"+size+"\t" + "數組的容量:"+data.length + "\n");        sb.append("[");        for (int i = 0; i < size; i++) {            sb.append(data[i]);            if(i !=size-1){                sb.append(",");            }        }        sb.append("]");        return sb.toString();    }    //是否包含    public boolean isContain(E val){        for (int i = 0; i < size; i++) {            if(val.equals(data[i])){                return true;            }        }        return false;    }    //刪除某個    public E delete( int index ){        if(index < 0 || index >= size){throw new NullPointerException("null");}        E ret = data[index];        for (int i = index; i < size; i++) {            data[i] = data[i+1];        }        size --;        if (size < data.length/2){            resize(size);        }        return ret;    }    //尋找下標    public int findIndex(E val){        Array a = new Array();        for (int i = 0; i <size; i++) {            if (val.equals(data[i])){                return i;            }        }        return -1;    }    //尋找所有下標    public List findIndexs(E val){        List l = new ArrayList();        for (int i = 0; i <size ; i++) {            if(val.equals(data[i])){                l.add(i);            }        }        return l;    }    //改變容量長度    public void resize(int capacity){        E[] newData = (E[]) new Object[capacity];        for (int i = 0; i <size; i++) {            newData[i] = data[i];        }        data = newData;    }}

 

封裝一個簡單的動態數組

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.