黑马程序员技术交流社区

标题: 如何动态改变数组的长度 [打印本页]

作者: 林国锋    时间: 2011-10-7 19:54
标题: 如何动态改变数组的长度
本帖最后由 林国锋 于 2011-10-7 21:53 编辑

有一个数组
  1. String[] strs = {"苹果","香蕉","梨子","西瓜"};
  2. for(int i = 0; i<strs.length; i++){
  3.     System.out.println(strs[i]);
  4. }
  5. //在此在strs数组中再添加一个柿子进去。
复制代码
现在我突然又想在第五行开始用代码的方式添加一个“柿子”到strs数组中,请问要怎么样把原来的数组扩容?
如原来的数组不能被扩容还有什么更方便的方法可以继续使用strs同名数组又可以增加一个长度?

=====================================================
找到方法了,用Arrays.copyOf();
  1. strs = Arrays.copyOf(strs,strs.length + 1);
  2. strs[strs.length] = "柿子";
  3. for(int i = 0; i<strs.length; i++){
  4.     System.out.println(strs[i]);
  5. }
复制代码
Arrays.copyOf()可以拷贝一份数组副本,利用加长的副本变通的实现数组的加长扩容这种方法比其实的方法更加方法简单高效

作者: 叶涛    时间: 2011-10-7 19:58
只有重新建立一个 数组了,strs这个数组在堆中已经是固定形式
作者: 林国锋    时间: 2011-10-7 20:04
叶涛 发表于 2011-10-7 19:58
只有重新建立一个 数组了,strs这个数组在堆中已经是固定形式

难道就没有其实方法吗?
作者: 刘洋    时间: 2011-10-7 20:13
理论上,你在为数组申请内存的时候已经固定数组长度了吧,除非重新申请内存,也就相当于重新建立数组。
作者: 刘朋朋    时间: 2011-10-7 20:28
重新new,然后遍历原数组取值放重新放入,并添加你要添加的元素。
作者: 王家虎    时间: 2011-10-7 20:39
可以使用数组类Arrays的asList方法,此方法可以把数组变成一个集合,做法是Arrays.asList(你要转的数组);你上面的代码可以写成:
String[] strs = {"苹果","香蕉","梨子","西瓜"};

for(int i = 0; i<strs.length; i++){

    System.out.println(strs[i]);

}
List<String> list = Arrayl.asList(arr);
lst.add("柿子");






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2