美文网首页
java容器之自定义ArrayList

java容器之自定义ArrayList

作者: 赶路人_3864 | 来源:发表于2019-04-18 19:12 被阅读0次

    前言
    在Java中我们常常用到容器List、Set、map,在这里我重写Arraylist,以更好的了解java源码下面我们用一副图来表示容器

    360截图170810259081103.png

    方法实现

    自定义容器:

    package arraylist;
    public class Mycollection <E>{
        Object[] obj=new Object[5];
        public void set(E objs,int index){
            obj[index]=objs;
        }
        public  Object get(int index ){
            return obj[index];
        }
    }
    

    自定义arraylist:

    package arraylist;
    
    import java.util.Arrays;
    
    public class NewArrayLIst<E> {
        //定义Object数组
        private Object[] elementData;
        //定义集合内容长度
        private int size;
        //定义集合初始长度
        private static final int Defalt_capacity=10;
        //构造方法一
        public NewArrayLIst(){
            elementData=new Object[Defalt_capacity];
        }
    
        //构造方法二
        public  NewArrayLIst(int capacity){
            elementData=new Object[capacity];
        }
    
        //增加元素方法考虑扩容方法
        public void add(E obj){
    
            //如果到达最大长度则扩容长度
            if(size==elementData.length){
                Object[] newArray=new Object[elementData.length+(elementData.length>>1)];//10-->10+10/2
                //拷贝老数组
                System.arraycopy(elementData,0,newArray,0,elementData.length);
                elementData=newArray;
            }
            elementData[size++]=obj;
        }
    
        //toString 方法
        public String toString(){
            StringBuilder sb=new StringBuilder();
            sb.append("[");
            for(Object obj:elementData){
                if(obj!=null)
                sb.append(obj+",");
            }
            sb.setCharAt(sb.length()-1,']');
            return sb.toString();
        }
    
        //set检查索引抛出异常
        public void set(E element,int index){
            if(index<0||index>=size){
                throw new RuntimeException();
            }
            elementData[index]=element;
        }
    
        //get
        public Object get(int index){
            return  elementData[index];
        }
    }
    

    相关文章

      网友评论

          本文标题:java容器之自定义ArrayList

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