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比较好
------解决方案--------------------一维的 最好用 集合