为什么图遍历邻边的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回答
-
课程代码中的实现其实就是这个思路哦。只不过返回的是可迭代接口:
public Iterable<Integer> adj(int v){ ...... }
具体代码可以参见:
具体调用:
for( int i: G.adj(v) ) { ...... }
你的做法显示的返回一个迭代器,当然也可以:)
我的做法中,用户不需要显示声明一个迭代器的对象进行操作,直接使用for循环进行遍历就可以。当然有可能在特定场景下丧失一定的灵活性,不过其实对于大多数图算法(尤其是这个课程中涉及的图算法),这样就够了:)
012018-03-24
相似问题