A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 林国锋 黑马帝   /  2011-10-7 19:54  /  3666 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 林国锋 于 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()可以拷贝一份数组副本,利用加长的副本变通的实现数组的加长扩容这种方法比其实的方法更加方法简单高效

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
只有重新建立一个 数组了,strs这个数组在堆中已经是固定形式
回复 使用道具 举报
叶涛 发表于 2011-10-7 19:58
只有重新建立一个 数组了,strs这个数组在堆中已经是固定形式

难道就没有其实方法吗?
回复 使用道具 举报
理论上,你在为数组申请内存的时候已经固定数组长度了吧,除非重新申请内存,也就相当于重新建立数组。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
刘朋朋 来自手机 黑马帝 2011-10-7 20:28:28
报纸
重新new,然后遍历原数组取值放重新放入,并添加你要添加的元素。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
可以使用数组类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("柿子");

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马