2

hereConnectionの2番目の回答を使用して、オブジェクトの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()));
}

しかし、これは配列の各 LinkedList 要素に単一の新しいノードを追加するだけだと思います。ループして、各LinkedList 要素numOfConnectionsに大量のノードを追加したいと考えています。たとえば、 では 3 ノード、では 5 ノード、では 2 ノードなどです。map[0]map[1]map[2]

4

2 に答える 2

2

LinkedListインスタンスの配列があるため:

  1. 配列内のバケットごとに、新しい LinkedList インスタンスを配置する必要があります
  2. 配列内のバケットに含まれる各 LinkedList に Connection インスタンスを追加する必要があります。

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(...));

listsJavaには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 に答える