读书人

ArrayList种toArray方法存在的风险

发布时间: 2013-04-07 12:50:11 作者: rapoo

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 小时前 顶一个

读书人网 >编程

热点推荐