首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

ArrayList种toArray方法存在的风险

2013-04-07 
ArrayList类toArray方法存在的风险1.传入的参数a,并不一定被使用到2.返回的并不一定是传入的那个a如果我们

ArrayList类toArray方法存在的风险
1.传入的参数a,并不一定被使用到
2.返回的并不一定是传入的那个a

如果我们传入的a的length<size,也就是说传入的那个a根本容纳不了那么多数据,那么这个方法使用不会出现什么问题,因为方法内部会copy一份数据并给我们搞一个新的数组,然后返回给我们。

但是如果我们传入的a的长度?>size,也就是说我们传入的a能够容纳arraylist中的内容,并且还有剩余空间,
这时候我们发现他仅仅是把arraylist中的数据copy到a中?,然后用null标志了一下结束位置。
那么,我们在外部访问a的时候唯一遍历方式就是根据null位置判断数据结尾对吧,假设arraylist中总共有10条数据,但是第二条数据为null,
这个时候我们在外部再访问a的时候就会丢失8条数据了。因为我们是根据null来判断数据结束位置的。

1 楼 X_Goder 昨天   所以我一般是:
ArrayList<String> L;
L.toArray(new String[L.size()]); 2 楼 weng 21 小时前   搞不懂为啥要做这一步
if (a.length > size) 
            a[size] = null;  3 楼 mingning179 21 小时前   weng 写道搞不懂为啥要做这一步
if (a.length > size) 
            a[size] = null; 
这一步是给出结束标志。
就像c中字符串以"\0"结尾一样 4 楼 javay 15 小时前   顶一个

热点排行