请教下,
由于前面不能确定数组有多大,我定义一个动态数组
String [] qu_s=new String[0];
qu_s=new String[];......
然后再往数组里赋值操作,这样做有问题吗?

解决方案 »

  1.   

    不能,你用集合吧ArrayList,HashMap
      

  2.   

    String [] 是运行时分配空间,但是,一旦分配就不能动态增长,像楼上说的那样,使用ArrayList等集合。
      

  3.   

    int i=10;String str[]=new String[i];
      

  4.   

    这是一个扩充数组的方法,不过还是推荐你用ArrayList等集合.
    public static Object arrayGrows(Object oldArray) {
    Class cl = oldArray.getClass();
    if(!cl.isArray()) return null;
    Class componentType = cl.getComponentType();
    int length = Array.getLength(oldArray);
    int newLength = length * 11/10 + 10;
    Object newArray = Array.newInstance(componentType, newLength);
    System.arraycopy(oldArray, 0, newArray, 0, length);
    return newArray;
    }
      

  5.   

    实际上在 ArrayList 内部也是使用 System.arraycopy() 来实现的。为了不重复发明轮子,还是使用 ArrayList 吧。
      

  6.   

    好的办法是使用ArrayList,虽然你也可以自己实现一个简单的ArrayList,可是,除非练习,为什么要自己实现呢?用最古老的方法定义一个数据结构,一个数组加一个有效长度
    String[] qu_s=new String[10];
    int len=0;然后向里添加时判断if(len>=qu_s.length) qu_s=new String(len*2);然后每次添加时都别忘了给len更新。除非做练习,不要这样做,ArrayList都实现好了,而且经过了这么长时间的测试使用和DEBUG,质量信得过,基本上能想到的功能也都提供了,呵呵。
      

  7.   

    ArrayList al= new ArrayList(); //定义动态数组
    al.add("");//用这个方法可以往数组写数据  内存有多大可以写多大