我遇到了以下问题: length运算符可用于控制迭代遍历数组中每个元素的for循环,如
for (int j=0; j<list.length; j++)
但是,这不一定安全。为什么不?
这个问题有什么优点还是只是疯了?
答案 0 :(得分:1)
如果已为list
检查null
,则表示安全。例如,
int len = (list != null) ? list.length : 0;
for (int j = 0; j < len; j++)
如果len
为0
,则list
将为null
。在您发布的版本中,list = null;
时您可以获得NullPointerException
。
答案 1 :(得分:0)
这取决于。
如果您只是通过列表进行标准遍历,那么您也可以使用foreach。如果您需要某些操作的索引,通常可以按照您的说法进行操作。
但要注意的一件事是列表的大小会改变吗?例如,如果你在迭代中的某个地方删除了一个元素,那么最后会有一个你不会迭代的元素。
非常小心的另一件事是,如果这不是List而是Collection。与列表不同,集合不对元素的顺序做出承诺。如果在集合中添加或删除元素,则所有索引都可能会更改。