retainall java_java用retainALL 处理两个具有相同元素的list,竟然返回false,这是为什么?...

展开全部

首先, 这个retainAll 方法的作用是 :java.util.ArrayList.retainAll(Collection> collection)

仅保留此collection中那些也包含在指定collection的元素(可选操作)。

换句话说,移除此collection中未包含在指定collection中的所有元素。

此实现在此collection上进行迭代,依次检查该迭代器返回的每个元素,以查看其是否包含在指定的collection中。如果不是,则使用迭代器的remove方法将其从此collection中移除。

其次,返回值的意思是这样的,如果此 collection 由于调用而发生更改,则返回 true

再次,你这个list3 和list1 里面元素的内容 其实是一样的, 这样一来,调用 list3.retainAll(list1) 时候,发现,不需要从list3中去除不在list1中的元素,因此这个list3不需要发生更改,那么返回值就是是false,也就是说,这62616964757a686964616fe58685e5aeb931333335333735个方法的返回值是标识list3 有没有改变,而不是这个方法是否执行正常或者成功

最后,我们再来看看 JDK1.6 这个方法的 源码

public boolean retainAll(Collection> c){

boolean modified = false;

Iterator e = iterator();

while (e.hasNext()){

if (!c.contains(e.next())){

e.remove();

modified = true;

}

}

return modified;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值