Java List的安全删除

一、
上海市长宁区长宁路1027号999兆丰广场F4用这种方法,元素的过滤是不完全的。只要list中有相邻2个相同的元素,就过滤不完。List调用remove(index)方法后,会移除index位置上的元素,index之后的元素就全部依次左移,即索引依次-1要保证能操作所有的数据,需要把index-1,否则原来索引为index+1的元素就无法遍历到(因为原来索引为index+1的数据,在执行移除操作后,索引变成index了,如果没有index-1的操作,就不会遍历到该元素,而是遍历该元素的下一个元素)。

在这里插入图片描述
2、
在这里插入图片描述3、倒序遍历List删除元素-
在这里插入图片描述4、foreach遍历List删除元素–错误!!!

在这里插入图片描述5、迭代删除List元素–正确!
在这里插入图片描述6、迭代遍历,用list.remove(i)方法删除元素–错误!!!
在这里插入图片描述
7、Java8 使用lambda表达式删除列表元素
在这里插入图片描述
可见使用lambda表达式的方法更为优雅,这里使用了List接口所继承的Collection接口在JDK 1.8新增的removeIf方法,该方法接收一个Predicate类型的参数,删除列表中满足Predicate条件的元素。
8、使用方法引用删除列表元素

在这里插入图片描述
除了lambda表达式,JDK 1.8还可以用一种称为方法引用的方式来删除列表中的元素,使用类似C++的::运算符,来引用一个对象的实例方法或一个类的类方法,下面就用方法引用的方式来删除一个列表中的指定元素。

总结
在JDK 1.8及之后,还可以使用lambda表达式和方法引用的方式正确地删除列表中的元素,这两种方式更为优雅。

阅读更多

没有更多推荐了,返回首页