使用数组长度for循环不安全

时间:2014-11-16 00:51:20

标签: java arrays for-loop

我遇到了以下问题: length运算符可用于控制迭代遍历数组中每个元素的for循环,如

for (int j=0; j<list.length; j++)

但是,这不一定安全。为什么不?

这个问题有什么优点还是只是疯了?

2 个答案:

答案 0 :(得分:1)

如果已为list检查null,则表示安全。例如,

int len = (list != null) ? list.length : 0;
for (int j = 0; j < len; j++)

如果len0,则list将为null。在您发布的版本中,list = null;时您可以获得NullPointerException

答案 1 :(得分:0)

这取决于。

如果您只是通过列表进行标准遍历,那么您也可以使用foreach。如果您需要某些操作的索引,通常可以按照您的说法进行操作。

但要注意的一件事是列表的大小会改变吗?例如,如果你在迭代中的某个地方删除了一个元素,那么最后会有一个你不会迭代的元素。

非常小心的另一件事是,如果这不是List而是Collection。与列表不同,集合不对元素的顺序做出承诺。如果在集合中添加或删除元素,则所有索引都可能会更改。