java - Graph 文件中的 (Node)nodes.get(j)) 是什么意思?

标签 java algorithm graph

请在此处找到以下文件 (1) Node 2)Main 3) Graph):

https://www.dropbox.com/sh/at9u2684k345uv0/dK77w58rEM

基本上我正在实现 BFS 和 DFS,并且对图形文件中的某些代码有一些疑问:

private Node getUnvisitedChildNode(Node n)
{

    int index=nodes.indexOf(n);
    int j=0;
    while(j<size)
    {
        if(adjMatrix[index][j]==1 && ((Node)nodes.get(j)).visited==false)
        {
            return (Node)nodes.get(j);
        }
        j++;
    }
    return null;
}

谁能告诉我这是什么

(Node)nodes.get(j))

这里是什么意思?

我还有几个问题:

在 Graph 类的 bfs() 方法中,我有以下问题:

1) 据我了解

"Queue<Node> q=new LinkedList<Node>();" 

表示 LinkList 实现了一个 Queue。

那么,为什么在这种情况下需要 LinkedList,我们不能通过“Queue q = new Queue();”来完成吗? ?

2)虽然我已经多次阅读“this”关键字的用法,但谁能解释一下原因

使用了 q.add(this.rootNode) 为什么不直接使用 q.add(rootNode) 呢?

3) 下面这行是什么意思?

while((child=getUnvisitedChildNode(n))!=null)

谢谢

最佳答案

如果查看 Graph 类,您会看到以下声明:

public ArrayList nodes = new ArrayList();

这使用了 ArrayList 类型,但没有使用泛型(顺便说一句,这是一个坏主意)。代码行

((Node)nodes.get(j)).visited

含义如下:

  1. 获取 nodes ArrayList 的第 j 个元素。由于 ArrayList 未使用泛型,因此返回类型为 Object 的对象。
  2. 将该对象转换为 Node,这就是该对象的真实含义。
  3. 在该 Node 中查找 visited 字段。

换句话说,这意味着“在nodes列表中查找存储在位置jNode,然后读取它的访问了字段。

如果作者在 ArrayList 中使用泛型,那么所有这一切都可以轻松避免,如

public ArrayList<Node> nodes = new ArrayList<Node>();

如果是这种情况,查找节点并读取其 visited 字段的代码就是

nodes.get(j).visited

希望这对您有所帮助!

关于java - Graph 文件中的 (Node)nodes.get(j)) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872017/

相关文章:

java - Android Service、生命周期和线程

algorithm - 我可以根据初始 key 和输出哈希来识别哈希算法吗?

algorithm - 具有两个不同边权重的图

c - 这里有人使用 make-cdf & stats.pl 程序吗?

java - 集合中的整数数组

java - SwingX - 个性化 JXDatePicker

string - 如何查找并检查给定字符串中是否存在任何子字符串及其反向?

c++ - nCk 模 p 当 n % p 或 k % p == 0

java - 如何表示树中 sibling 之间的亲密度?

java - Struts 2 中未找到类异常