您的位置:首页 > 编程语言 > Java开发

java自己实现顺序线性表ArrayList

2017-12-03 09:32 549 查看
package my.list;

public class MyList {

    privateObject[] elementData;

    private intsize;

    

    

    publicMyList() {

      this(10);

    }

    publicMyList(int initLength) {

      elementData = new Object[initLength];

    }

    

    public intsize() {

      return size;

    }

    

    public intlength() {

      return elementData.length;

    }

    

    publicboolean isEmpty() {

      return size == 0;

    }

    

    public voidexpandLength() {

      //先把以前的内容拷贝到新数组

      Object[] newArray = new Object[elementData.length* 2];

      for(int i=0; i

         newArray[i] = elementData[i];

      }

      elementData = newArray;

      System.out.println("扩容成功");

    }

    

    publicboolean add(Object obj) {

      if(size == elementData.length) {

         expandLength();

      }

      elementData[size] = obj;

      size++;

      return true;

    }

    publicboolean add(int index,Object obj) {

      if(index < 0 || index > size) {

         try {

            throw new Exception();

         } catch(Exception e) {

            e.printStackTrace();

         }

      }

      if(size == elementData.length) {

         expandLength();

      }

      //System.arraycopy(elementData, index,elementData, index+1, size-index);

      for(int i=index; i

         elementData[index + 1] =elementData[index];

      }

      elementData[index] = obj;

      size++;

      return true;

    }

    

    publicboolean remove(int index) {

      if(index < 0 || index >= size) {

         try {

            throw new Exception();

         } catch(Exception e) {

            e.printStackTrace();

         }

      }

      //System.arraycopy(elementData, index+1,elementData, index, size-index-1);

      for(int i=index; i

         elementData[index] = elementData[index +1];

      }

      elementData[--size] = null;

      return true;

    }

    public voidremove(Object obj) {

      for(int i=0; i< size; i++) {

         if(get(i).equals(obj)) {

            remove(i);

            break;

         }

      }

    }

    

    publicboolean set(int index,Object obj) {

      if(index < 0 || index >= size) {

         try {

            throw new Exception();

         } catch(Exception e) {

            e.printStackTrace();

         }

      }

      elementData[index] = obj;

      return true;

    }

    

    publicObject get(int index) {

      if(index<0 || index>size) {

         try {

            throw new IndexOutOfBoundsException();

         } catch(Exception e) {

            e.printStackTrace();

         }

      }

      return elementData[index];

    }

    public voidprint() {

      for(int i=0; i

         System.out.println(elementData[i]);

      }

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: