如何访问链表数组?

时间:2012-12-08 20:08:17

标签: java linked-list

我使用here的第二个答案创建了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元素添加一个单个新节点。我想循环并将numOfConnections个节点添加到每个 LinkedList元素。例如,map[0]中有3个节点,map[1]中有5个节点,map[2]中有2个节点,等等。

2 个答案:

答案 0 :(得分:2)

由于您有一组LinkedList个实例:

  1. 对于数组中的每个存储桶,您需要放置一个新的LinkedList实例
  2. 您需要将Connection实例添加到每个LinkedList,该列表包含在数组的存储桶中。
  3. 您正在尝试在其上调用List,将您的数组视为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对象,而且令人困惑。

答案 1 :(得分:2)

在您的示例中“map [0]中的3个节点,map [1]中的5个节点,map [2]中的2个节点”如果numOfConnections是要添加到LinkedList的值的数量[ k] shoudnt你映射要添加的列表?例如: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()));
    }
}