美文网首页
手写ArrayList

手写ArrayList

作者: 浅墨不语 | 来源:发表于2020-12-16 20:22 被阅读0次

    java基础之简单手写ArrayList,闲话休提,直接上代码:

    import java.util.Arrays;
    
    /**
     * @Author: gerald
     * @Description: 手写ArrayList
     * @Date: Created in 2020/12/16 18:23
     * @Modified By:
     **/
    public class MyArrayList {
        //存储任意类型元素
        private Object[] elements = null;
        //数组中存储多少元素
        private int size = 0;
    
        private static final int DEFAULT_INITIAL_CAPACITY = 10;
    
        public MyArrayList() {
            this(10);
        }
    
        public MyArrayList(int initialCapacity) {
            if (initialCapacity < 0) {
                throw new IllegalArgumentException("容量不能为负");
            }
            elements = new Object[initialCapacity];
        }
    
        //保存新的元素
        public void add(Object ele) {
            //判断和扩容
            if (size == elements.length) {
                Object[] temp = Arrays.copyOf(elements, elements.length * 2);
                elements = temp;
            }
            elements[size] = ele;
            size++;
        }
    
        //查询指定索引位置元素
        public Object get(int index) {
            if (index < 0 || index > size) {
                throw new IllegalArgumentException("容量不能为负");
            }
            return elements[index];
        }
    
        //替换指定位置元素
        public void set(int index, Object newEle) {
            if (index < 0 || index > size) {
                throw new IllegalArgumentException("容量不能为负");
            }
            elements[index] = newEle;
        }
    
        //删除指定索引位置元素
        public void remove(int index) {
            if (index < 0 || index > size) {
                throw new IllegalArgumentException("容量不能为负");
            }
            for (int i = index; i < size - 1; i++) {
                //把index+1位置移动到index位置
                elements[i] = elements[i + 1];
            }
            //把最后一个位置设置为null
            elements[size - 1] = null;
            //size-1
            size--;
        }
    
        //返回数组元素个数
        public int size() {
            return size;
        }
    
        //判断数组中元素个数是否为0
        public boolean isEmpty() {
            return size == 0;
        }
    
        //清空元素
        public void clear() {
            this.elements = new Object[DEFAULT_INITIAL_CAPACITY];
            size = 0;
        }
    
        @Override
        public String toString() {
            if (elements == null) {
                return "null";
            }
            if (size == 0) {
                return "[]";
            }
            StringBuilder sb = new StringBuilder(size * 2 + 1);
            sb.append("[");
            for (int i = 0; i < size; i++) {
                sb.append(elements[i]);
                if (i != size - 1) {    //判断是否最后一个元素
                    sb.append(",");
                } else {
                    sb.append("]");
                }
            }
            return sb.toString();
        }
    }
    
    

    相关文章

      网友评论

          本文标题:手写ArrayList

          本文链接:https://www.haomeiwen.com/subject/cqpogktx.html