注册 登录
编程论坛 JAVA论坛

ArrayList中的size问题

王小贱2016 发布于 2017-07-10 12:43, 2127 次点击
以下是我自己写ArrayList的代码,没有给其中的变量size赋值,但是结果输出的size确实对的,我觉得应该添加我在下面注释的代码才应该对呀


public class SxAarryList  {
    private Object[] elementData;
    private int size;
    public int size(){
        return size;
    }
   
    public boolean isEmpty(){
    return size==0;
    }
    public SxAarryList(){
        this(10);
        
    }
   
    public SxAarryList(int initicalCapacity){
        if(initicalCapacity<0){
            try {
                throw new Exception();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
       //size=initicalCapacity 是这个地方应该加这句代码呀,为什么不加也是对的
        elementData=new Object[initicalCapacity];
    }
   
    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 Object get(int index){
        if(index<0||index>=size){
            try {
                throw new Exception();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return elementData[index];
    }
    public void remove(int index){
        
    }
   
     public static void main(String[] args) {
        SxAarryList list =new SxAarryList(3);
        list.add("666");
        list.add("bbb");
        list.add("fff");
        list.add("fff");
        list.add("fff");
        list.add("fff");
        list.add("fff");
        System.out.println(list.size());
        System.out.println(list.get(3));

        
        
    }

}
2 回复
#2
林月儿2017-07-10 14:09
程序代码:
   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++;//你是指的get方法调不报?
    }

不过初始化参数指定的数组长度,你的size应该是数据长度吧?
恩。。。这个扩容有点狠呀
#3
cui273872017-07-10 22:13
2L正解,size是你数据长度,不是你的list容量吧,加了就不对了吧
1