2

Connection使用此处的第二个答案创建了一组 LinkedList 对象。也就是说,我已经完成了:

LinkedList<Connection>[] map = (LinkedList<Connection>[]) new LinkedList[count];

但是,我对如何访问数组的每个元素(即每个 LinkedList)并创建一个新节点感到困惑。现在,我有:

for (int j = 0; j < numOfConnections; j++) {
    map[j].add(new Connection(s.next(), s.nextDouble(), s.next()));
}

但我认为这只会为 Array 的每个 LinkedList 元素添加一个新节点我想循环并为每个LinkedList 元素添加numOfConnections节点数量。例如, 中的 3 个节点、 中的5 个节点、 中的2 个节点等。map[0]map[1]map[2]

4

2 回答 2

2

由于您有一组LinkedList实例:

  1. 对于数组中的每个存储桶,您需要放置一个新的 LinkedList 实例
  2. 您需要将 Connection 实例添加到每个 LinkedList,该 LinkedList 包含在数组中的存储桶中。

List通过尝试对其进行调用,您将数组视为 a add

在你的循环中,做类似的事情

LinkedList<Connection> list = map[j]; // get the list for this bucket in the array
if (list == null) // if there is no LinkedList in this bucket, create one
    list = map[j] = new LinkedList<Connection>();
list.add(new Connection(...));

我会将您的变量名称映射更改为类似的东西,lists因为 Java 有一个Map对象,这很令人困惑。

于 2012-12-08T20:11:28.580 回答
2

在您的示例“地图 [0] 中的 3 个节点、地图 [1] 中的 5 个节点、地图 [2] 中的 2 个节点”中,如果numOfConnections是您想要添加到 LinkedList[k] 的值的数量,您应该将哪个列表映射到添加 ?例如:numOfConnections[] = {3, 5, 2};

for ( int k = 0; k < numOfConnections.length; k++ ) 
{
    if (map[k] == null) map[k] = new LinkedList<Connection>();

    for (int j = 0; j < numOfConnections[k]; j++)
    {
        map[k].add(new Connection(s.next(), s.nextDouble(), s.next()));
    }
}
于 2012-12-08T20:25:24.733 回答