js06金沙官网登录-js06.com-欢迎您

来自 计算机 2019-10-09 16:42 的文章
当前位置: js06金沙官网登录-js06.com-欢迎您 > 计算机 > 正文

金沙官网登录我的集合学习笔记,集合学习笔记

金沙官网登录,自己的集纳学习笔记,会集学习笔记

一,ArrayList

福寿年高团结的ArrayList:首若是加上艺术,掌握自动扩容机制

代码+注释

    package com.amazing.jdk.learn2List.list_08_13;  

    /** 
     * 1.实现ArrayList接口的增删改查方法 
     * 2.理解自动扩容机制 
     *参考:http://blog.csdn.net/u011240877/article/details/52802849 
     */  
    public class MyArrayList<E> {  
        //需要扩容的数组  
        transient Object[] elementData;  
        //数组里的元素个数  
        private int size;  

        public boolean add(E o) {  
            /* 
            1.先判断一下,不然会报空指针 
             */  
            if(elementData==null){  
                elementData=new Object[]{};  
                size=0;  
            }  
            /* 
            2.再判断当数组被元素填满时,扩容 
             */  
            if(size==elementData.length){  
                //3.定义一个数组接收原来数组的元素  
                Object[] oldData=elementData;  
                //4.扩容1.5倍  
                int newCapacity=(elementData.length*3)/2;  
                if(newCapacity<size) newCapacity=size;  
                //5.定义一个新长度的数组  
                elementData=new Object[newCapacity];  
                //6.复制  
                System.arraycopy(oldData,0,elementData,0,size);  
            }  
            elementData[size++] = o;  
            return true;  
        }  

        public int size(){  
            return size;  
        }  

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

        public void clear(){  
            for(int i=0;i<size();i++){  
                elementData[i]=null;  
            }  
            size=0;  
        }  

                    /* 
                System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。其函数原型是: 
                public static void arraycopy(Object src, 
                                 int srcPos, 
                                 Object dest, 
                                 int destPos, 
                                 int length) 
                src:源数组;    srcPos:源数组要复制的起始位置; 
                dest:目的数组;  destPos:目的数组放置的起始位置;    length:复制的长度。 
                注意:src and dest都必须是同类型或者可以进行转换类型的数组. 
                有趣的是这个函数可以实现自己到自己复制,比如: 
                int[] fun ={0,1,2,3,4,5,6}; 
                System.arraycopy(fun,0,fun,3,3); 
                则结果为:{0,1,2,0,1,2,6}; 
                实现过程是这样的,先生成一个长度为length的临时数组,将fun数组中srcPos 
                到srcPos+length-1之间的数据拷贝到临时数组中,再执行System.arraycopy(临时数组,0,fun,3,3). 

                 */  

    }  

 

一,ArrayList 达成团结的ArrayList:紧如若加上海艺术剧场术,精通自动扩大容积机制 代码+注释 package com.amazing.jdk.learn2...

本文由js06金沙官网登录-js06.com-欢迎您发布于计算机,转载请注明出处:金沙官网登录我的集合学习笔记,集合学习笔记

关键词: