日期:2014-05-20  浏览次数:20654 次

java 动态数组的问题
请教下,
由于前面不能确定数组有多大,我定义一个动态数组
String   []   qu_s=new   String[0];
qu_s=new   String[];

......
然后再往数组里赋值操作,这样做有问题吗?


------解决方案--------------------
不能,你用集合吧ArrayList,HashMap
------解决方案--------------------
String [] 是运行时分配空间,但是,一旦分配就不能动态增长,像楼上说的那样,使用ArrayList等集合。
------解决方案--------------------
改用List或者Vector
------解决方案--------------------
数组必须要在初始化时决定长度。
要想运态增长,只能是集合类。
要不你就定义一个以你的程序不可能越界长度的数组。
------解决方案--------------------
这是一个扩充数组的方法,不过还是推荐你用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;
}

------解决方案--------------------
实际上在 ArrayList 内部也是使用 System.arraycopy() 来实现的。

为了不重复发明轮子,还是使用 ArrayList 吧。
------解决方案--------------------
好的办法是使用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,质量信得过,基本上能想到的功能也都提供了,呵呵。
------解决方案--------------------
用vector

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

------解决方案--------------------
动态数组用Arraylist比较好
------解决方案--------------------
一维的 最好用 集合