我使用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个节点,等等。
答案 0 :(得分:2)
由于您有一组LinkedList
个实例:
您正在尝试在其上调用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()));
}
}