List集合是我们开发中经常会使用到的一种集合形式。有时候会遇到要在遍历List集合时删除指定的元素。
比如,有一个字符串类型的List,包含三个元素:“软件”、“开发”、“领路人”,我们要实现的是在遍历这个集合时,删除长度为2的字符串元素。要怎么做呢?是下面这样吗?
看起来貌似是没有什么问题的,那执行看看吧。
“开发”这个元素没有被删除掉,看来还是有问题啊。
这是因为在循环中删除了一个元素后,集合的大小和索引位置就都发生了变化,而循环的变量还是在递增,所以最终执行的时候就会出现与预期不符的情况。
可能只是这样说不容易理解,大家可以自己debug逐行运行一下试试就能明白了。
那上面这样的方式不行,那要怎么处理呢?
有的朋友可能已经知道了,是的,用迭代器。具体是要怎么做呢,继续往下看吧。
上面就是用迭代器的方式在遍历List集合是删除元素的方法了。
具体能不能达到效果呢,执行验证一下就知道了。
恩,这次就符合预期了。
有么有朋友注意到,上面代码中“while (iterator.hasNext())”被idea着重提示了。那是因为我用的jdk版本是1.8。在这个版本中对上面的代码逻辑有更简便的编码形式,idea便给出了提示。
这就是idea给出的提示内容了,说这里可以用“removeIf”方法替换。怎么替换idea一样可以帮我们完成,如果没有改动过idea的快捷键的话,就是把光标置于这行代码中,然后使用快捷键“Alt+Enter”,就会弹出下面的界面。
然后选中第一个就可以了。
idea就会帮我们把代码改成下面这样的了。
是不是简便多了呢。执行的结果和上面的代码也是完全一样的。
今天关于在遍历List是删除指定的元素的内容就到这里了。