gpt4 book ai didi

Java烦人的迭代器不会返回链表中的元素

转载 作者:行者123 更新时间:2023-11-29 06:06:11 26 4
gpt4 key购买 nike

给定以下代码:

public void insertIntoQueue(float length,int xElement,int yElement,int whichElement)
{
Dot dot = new Dot(xElement,yElement);
GeometricElement element = null;

// some code

int robotX,robotY;
boolean flag = false;
for (Iterator<Robot> i = robotList.iterator(); i.hasNext();)
{

// Robot currentRobot = (Robot) i.next();

robotX = ((Robot)(i)).getXlocation();
robotY = ((Robot)(i)).getYlocation();

// more code , irrelevant
}

我有以下对象:Robot、GeometricElement 和 Dot。

我想迭代一个 Robot 链表,它定义为:

public class Ground {

// more fields

private LinkedList <Robot> robotList; // used for storing the robots
public Ground(int row,int col) // ctor
{
// some code

this.robotList = new LinkedList<Robot>();
}
}

但是行:robotX = ((Robot)(i)).getXlocation();和 robotY = ((Robot)(i)).getYlocation();抛出 dispatchUncaughtException 异常。

请注意,我不想从链表中删除元素,我需要的是使用迭代器从当前元素中获取字段。

那怎么了?

问候罗恩

最佳答案

您注释掉的行实际上是正确的行,除了删除强制转换:

Robot currentRobot = i.next();           

因为您的迭代器是有类型的,所以您不需要强制转换,编译器会确保您使用的是正确类型的对象。

之后,您可以简单地:

robotX = currentRobot.getXlocation();
robotY = currentRobot.getYlocation();

没有丑陋的造型!


顺便说一句,如果你不需要通过迭代器修改集合,你可以大大改进代码风格,购买使用“foreach”:

for (Robot currentRobot : robotList) {
robotX = currentRobot.getXlocation();
robotY = currentRobot.getYlocation();
// .. more code
}

关于Java烦人的迭代器不会返回链表中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8469274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com