以此构造函数为例:
private final List<ArrayList<Integer>> adjList;
public Graph(int vertexCount) {
adjList = new ArrayList<ArrayList<Integer>>(vertexCount);
for (int i = 0; i < vertexCount; i++) {
adjList.add(new ArrayList<Integer>());
}
}
这里有人想要一个他只是提供顶点的顶点列表。
public List<Integer> adj(int vertex) {
return adjList.get(vertex);
}
现在,如果顶点没有连接任何节点,那么返回值将是大小为0的列表。 通过添加显式检查来返回Collections.Empty_List是有利的:如果列表大小为0,则返回Collections.Empty_List?
答案 0 :(得分:1)
无需这样做,您已经实例化了空列表。
您可以使用return Collections.unmodifiableList(adjList.get(v))
做什么,以便Graph
的用户无法修改内幕
答案 1 :(得分:1)
你应该返回一个ImmutableList,我认为更好地表达了你的意图(不应该修改返回的集合)。
return ImmutableList.copyOf(adjList.get(vertex));
也许您可以将方法的返回值更改为ImmutableList
,以便客户端可以看到他们甚至不应该尝试更改它。
前提是您可以使用Guava。