为什么图遍历邻边的Java method不写成public Iterator<Integer> adj(int v)?

来源:7-3 相邻结点迭代器

想不出来叫什么

2018-03-24

如题,为什么不这样写:

public Iterator<Integer> adj2(int v){
    return g[v].iterator();
}

这样,调用的时候,直接就可以:

Iterator it = play.adj(0);


写回答

1回答

liuyubobobo

2018-03-24

课程代码中的实现其实就是这个思路哦。只不过返回的是可迭代接口:

public Iterable<Integer> adj(int v){
   ......
}


具体代码可以参见:

https://github.com/liuyubobobo/Play-with-Algorithms/tree/master/07-Graph-Basics/Course%20Code%20(Java)/03-Vertex-Adjacent-Iterator/src/bobo/algo


具体调用:

for( int i: G.adj(v) ) {
    ......
}


你的做法显示的返回一个迭代器,当然也可以:)

我的做法中,用户不需要显示声明一个迭代器的对象进行操作,直接使用for循环进行遍历就可以。当然有可能在特定场景下丧失一定的灵活性,不过其实对于大多数图算法(尤其是这个课程中涉及的图算法),这样就够了:)

0
1
想不出来叫什么
非常感谢!
2018-03-24
共1条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程