第二季

需购买观看

101102

尚学堂JAVA最全教程

配合JAVA300集视频课程,一集一个文档

本文档配合:java300集第一季101102

【最新文档更新请加入速学堂www.sxt.cn

【专业JAVA培训机构,真正零首付入学www.bjsxt.com

通过对List接口的实现类ArrayList的常见方法的应用

我们对集合有了个更深刻的认识,为了加深对ArrayList的了解我们利用101102集来自己封装一个SxtArrayList类来模拟ArrayList类,代码如下:

package com.bjsxt.list;
 
public class SxtArrayList {
    private Object[] elementData;
    private int size;

    public int size() {
    return size;
    }

    public boolean isEmpty() {
    return size == 0;
    }

    public SxtArrayList() {
    this(10);
    }

    public SxtArrayList(int initialCapacity) {
    if (initialCapacity < 0) {
     try {
            throw new Exception();
     } catch (Exception e) {
            e.printStackTrace();
     }
    }
    elementData = new Object[initialCapacity];
    }

    public void add(Object obj) {

    // 数组扩容
    if (size == elementData.length) {
     Object[] newArray = new Object[size * 2 + 1];
     System.arraycopy(elementData, 0, newArray, 0, elementData.length);
     /*
      * for (int i = 0; i < elementData.length; i++) {
      * newArray[i]=elementData[i]; }
      */
     elementData = newArray;
    }
    elementData[size++] = obj;
    // size++;
    }

    public void add(int index, Object obj) {
    rangeCheck(index);
    ensureCapacity();//数组扩容

    System.arraycopy(elementData, index, elementData, index + 1, size - index);
    elementData[index] = obj;
    size++;
    }

    private void ensureCapacity() {
    // 数组扩容
    if (size == elementData.length) {
     Object[] newArray = new Object[size * 2 + 1];
     System.arraycopy(elementData, 0, newArray, 0, elementData.length);
     /*
      * for (int i = 0; i < elementData.length; i++) {
      * newArray[i]=elementData[i]; }
      */
     elementData = newArray;
    }

    }

    public Object get(int index) {
    rangeCheck(index);
    return elementData[index];
    }

    public void remove(int index) {
        rangeCheck(index);
        // 删除指定位置的对象
        // a b c d e
        if (index < 0 || index >= size) {
         try {
            throw new Exception();
         } catch (Exception e) {
            e.printStackTrace();
         }
         int numMoved = size - index - 1;
         if (numMoved > 0) {
            System.arraycopy(elementData,
         index + 1, elementData, index, numMoved);
         }
         elementData[--size] = null;
        }
    }

    public void remove(Object obj) {
    for (int i = 0; i < size; i++) {
     if (get(i).equals(obj)) {// 注意:底层调用的equals方法,不是==;
        remove(i);
     }
    }
    }

    public Object set(int index, Object obj) {
        rangeCheck(index);
        Object oldValue = elementData[index];
        elementData[index] = obj;
        return oldValue;
    }

    private void rangeCheck(int index) {
    if (index < 0 || index >= size) {
     try {
        throw new Exception();
     } catch (Exception e) {
        e.printStackTrace();
     }
    }
    }

    public static void main(String[] args) {
        SxtArrayList slist = new SxtArrayList(3);
        slist.add(132);
        slist.add("444");
        slist.add(5);
        slist.add("333");
        slist.add("333");
        slist.add("abc");
        slist.add("ccc");
        System.out.println(slist.size);
        System.out.println(slist.get(6));
    }
}


分类导航
点击按住视频可拖动

缩小

关闭

  • 正在学习
  • 北京总部地址:北京市海淀区西三旗桥东建材城西路85号神州科技园B座三层尚学堂
  • 咨询电话:400-009-1906 010-56233821
  • Copyright 2007-2015 北京尚学堂科技有限公司
  • 京ICP备13018289号-1 京公网安备11010802015183