gpt4 book ai didi

java - 使用迭代器时有没有办法跳过第一个节点?

转载 作者:行者123 更新时间:2023-12-01 07:58:47 25 4
gpt4 key购买 nike

我有用于实现 BFS 的代码,如下所示:

for(int i = 0; i < adjList.length; i++)
{
if(adjList[i].get(0).name.equals(u.name))
{
for(Iterator <Vertex> it = adjList[i].iterator(); it.hasNext();)
{
Vertex node = it.next();
System.out.println("====="+node.name);
if(node.color.equals("WHITE"))
{
node.color = "GRAY";
node.distance = u.distance + 1;
node.pre = u;
Q.add(node);
}
}
u.color = "BLACK";
System.out.println();
}
}

我使用以下代码使用列表列表实现了邻接列表:

ArrayList<Vertex> adjList[] = (ArrayList<Vertex>[])new ArrayList[size];

存储在邻接列表中的值是:

        adjList[0].add(new Vertex("r"));
adjList[0].add(new Vertex("s"));
adjList[0].add(new Vertex("v"));

adjList[1].add(new Vertex("s"));
adjList[1].add(new Vertex("r"));
adjList[1].add(new Vertex("w"));

adjList[2].add(new Vertex("t"));
adjList[2].add(new Vertex("w"));
adjList[2].add(new Vertex("x"));
adjList[2].add(new Vertex("u"));

在迭代器循环内,我需要对象“节点”来存储除第一个值之外的每个连续值,这可能吗?

最佳答案

我建议一个辅助方法:

<T> Iterator<T> skipFirstIterator(Iterable<T> iterable) {
Iterator<T> it = iterable.iterator();
it.next();
return it;
}

并在您的 for 循环 header 中调用它。

该方法隐式断言第一个元素的存在,否则抛出异常。考虑到你的程序逻辑,我相信这应该是这样的。如果您的列表可能合法地具有零个元素,则只需替换

it.next();

if (it.hasNext()) it.next();

关于java - 使用迭代器时有没有办法跳过第一个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27059350/

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