我是靠谱客的博主 活力高跟鞋,最近开发中收集的这篇文章主要介绍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源码分析...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部