如果存在零长度数组,我是否应该费心返回空列表?

时间:2013-08-14 18:55:44

标签: java collections

以此构造函数为例:

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?

2 个答案:

答案 0 :(得分:1)

无需这样做,您已经实例化了空列表。

您可以使用return Collections.unmodifiableList(adjList.get(v))做什么,以便Graph的用户无法修改内幕

答案 1 :(得分:1)

你应该返回一个ImmutableList,我认为更好地表达了你的意图(不应该修改返回的集合)。

return ImmutableList.copyOf(adjList.get(vertex));

也许您可以将方法的返回值更改为ImmutableList,以便客户端可以看到他们甚至不应该尝试更改它。 前提是您可以使用Guava