首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

(转)怎么使用Java List等集合类的removeAll方法

2012-12-19 
(转)如何使用Java List等集合类的removeAll方法原文地址:http://blog.csdn.net/liuyuhua0066/article/deta

(转)如何使用Java List等集合类的removeAll方法

原文地址:http://blog.csdn.net/liuyuhua0066/article/details/6528872

?

看到这个标题,估计很多人会纳闷:连集合类的removeAll方法都用不好还当什么程序员。

?

好吧,我承认我确实没用好这个方法,鄙视我吧。O(∩_∩)O哈!

?

先贴问题--->

?

实体类(User):

?

从列表中移除指定?collection?中包含的其所有元素(可选操作)。???

?

没错,就是移除子集合包含的元素,那为什么不是7,而是10 。

再看API说明,移除所包含的其所有元素,注意这个字眼:包含!

?

因为在执行removeAll方法时,会先对集合元素进行比较,如果元素相等才执行移除操作,说到这,相信很多人都已经明白是怎么回事了,因为不相等(equals),所以没有执行移除。

?

为什么会出现不相等的情况,实体类属性明明相同,为什么会不相等?

?

因为实体类没有Override hashCode和equals方法?!而在执行removeAll方法时是通过equals方法来判断集合元素是否相等的,如果没有Override equals方法,其默认的仍是比较对象,所以会出现上述问题!

?

归根到底,还是基础没有掌握牢固,同时也给自己提了个醒,写实体类时尽量Override?hashCode和equals方法,不这样说不定哪天就会出问题。

?

问题综述完毕,当然,这个问题实质上很简单,只希望给遇到有同样疑问的朋友一点帮助。

热点排行