我是靠谱客的博主 活力高跟鞋,这篇文章主要介绍java迭代器实例不能赋值给链表_实验踩坑记录:Java迭代器iterator无法remove、remove失败原因以及Iterator源码分析...,现在分享给大家,希望可以做个参考。

实验踩坑记录:Java迭代器iterator无法remove、remove失败原因以及Iterator源码分析

第一个坑

在软件构造Lab2实验过程中遇到一个问题,调用Set的iterator.remove函数时无法删除,且未报错,但是单步运行时发现所比较对象时完全相同的,根据重写的equals()函数也可判断相同,以下为原代码:

public static boolean removePiece(Player player, Piece piece){

Iterator iterator = player.pieces.iterator();

while (iterator.hasNext()){

if (piece.equals(iterator.next())) {

iterator.remove();

return true;

}

}

return false;

}

经单步运行时注意到一个细节,由于未重载hashCode函数,本该相同的iterator.next()和piece的hashCode不同,根据如下hash规则:

如果hash相同,对象不一定相等;但是如果hash不同,则对象一定不相等。

因此在不重载hashCode的前提下,重新修改该方法为:

public static boolean removePiece(Player player, Piece piece){

Iterator iterator = player.pieces.iterator();

wh

最后

以上就是活力高跟鞋最近收集整理的关于java迭代器实例不能赋值给链表_实验踩坑记录:Java迭代器iterator无法remove、remove失败原因以及Iterator源码分析...的全部内容,更多相关java迭代器实例不能赋值给链表_实验踩坑记录:Java迭代器iterator无法remove、remove失败原因以及Iterator源码分析内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(133)

评论列表共有 0 条评论

立即
投稿
返回
顶部