原已经分配了一定大小的数组,但后来发现不够用,我想扩大一下数组大小,用java能不能实现?怎样实现?比如:
Object[] s=new Objcet[10];
我想扩大到20个怎样实现?
先谢谢了.

解决方案 »

  1.   

    请用System.arrayCopy来完成该任务.速度很快.
      

  2.   

    int index = 10;//index的作用域必须是整个类
    Object[] s=new Objcet[index];
    假如你要装20个对象,就这样
    if (i >= index) {
    index *= 2;
    Object[] o = new Object[index];
          for(int i = 0; i < s.length; i++)
            o[i] = s[i];
    }
    s[i] = ss;
    i++;
    }
    这样数组就可以扩大很多倍
      

  3.   

    更正一下,应该是这样
    if (i >= index) {
    index *= 2;
    Object[] object = new Object[index];
    for(int i = 0; i < s.length; i++){
    object[i] = s[i];
    }
    s = object;
    }
    s[i] = ss;
    i++;
    }
      

  4.   

    用ArrayList代替数组,它可以提高更好的包装。就是不能用[]操作符。
      

  5.   

    再次说明一下.尽量用ArrayList.如果你实在需要用数组,比如你的数组是简单数组,为了效率和速度那就用System.arraycopy来做,这是个原生的方法,速度很快.还是尽量不要用weiqiyiji() 的办法来做.
      

  6.   

    楼上的说得太对了!
    数组的话每次都存在一个初期化大小的问题
    而list的话就不需要
      

  7.   

    我测试过arrayCopy()的速度,跟我的做法速度差不多,并未有什么明显差别
      

  8.   

    更正,经过多次测试,arraycopy比我的方法快了约50毫秒,那还是用arraycopy好,代码如下
    if (i >= index) {
    index *= 2;
    Object[] o = new Object[index];
    System.arraycopy(s, 0, o, 0,s.length);
    s[i] = ss;
    i++;
    }
    不过用ArrayList方便些,省的写这么多