リンクされたリストがどのように機能するかについて、少し混乱しているようです。基本的に、リンクされたリストはノードで構成され、各ノードには 1 つのデータ (正確には、それ自体が複数のメンバー変数を含むことができるオブジェクト) と、リスト内の次のノードへのリンク (または存在する場合は null ポインター) が含まれます。そのような次のノードはありません)。また、特定の種類のアクセス パターンを高速化するために、各ノードがリスト内の前のノードへのポインターも持つ二重リンク リストを使用することもできます。
1 つのノードに複数の「データ」を追加することは、1 つのノードから複数のリンクを追加するように聞こえます。これにより、リンク リストが N 分木に変わります。
リストの最後に複数のデータを追加するには、リンクされたリストに最も一般的に関連付けられている方法で、次のようにします。
LinkedList <Integer>linky = new LinkedList<Integer>();
int num1 = 2, num2 = 22, num3 = 25, num4 = 1337;
linky.add(num1);
linky.add(num2);
linky.add(num3);
linky.add(num4);
または、リンクされたリストの各ノードに複数のデータを持たせたい場合
これらのデータは、(すべてをメンバー変数として持つ を定義することによって)オブジェクトにパッケージ化する必要があります。class
例えば:
class GroupOfFourInts
{
int myInt1;
int myInt2;
int myInt3;
int myInt4;
public GroupOfFourInts(int a, int b, int c, int d)
{
myInt1 = a; myInt2 = b; myInt3 = c; myInt4 = d;
}
}
class someOtherClass
{
public static void main(String[] args)
{
LinkedList<GroupOfFourInts> linky = new LinkedList<GroupOfFourInts>();
GroupOfFourInts group1 = new GroupOfFourInts(1,2,3,4);
GroupOfFourInts group2 = new GroupOfFourInts(1337,7331,2345,6789);
linky.add(group1);
linky.add(group2);
}
}
これで、linky
2 つのノードがあり、それぞれにmyInt1、myInt2、myInt3、およびmyInt4int
の 4 つの sが含まれます。
ノート
上記のいずれも、リンクされたリストに固有のものではありません。このパターンは、一連のデータを 1 つの単位としてまとめて保存する場合に使用する必要があります。まとめて保存するすべてのデータのメンバー変数を持つクラスを作成し、そのタイプの任意の Java コレクション タイプ (ArrayList、LinkedList、TreeList など) を作成します。
リンクされたリストを使用することを確認してください (ArrayList または TreeList を選択する際のプログラミングの難しさの点でペナルティはないため)。これは、データ アクセス パターンによって異なります。リンクされたリストは O(1) の追加と削除を提供しますが、O(n) ルックアップを提供しますが、ArrayLists は O(1) ルックアップを提供しますが、O(n) 任意の追加と削除を提供します。TreeLists は、O(log n) の挿入、削除、およびルックアップを提供します。これらのトレードオフは、所有するデータの量と、データ構造を変更してアクセスする方法によって異なります。
もちろん、リストに 100 個未満の要素しかない場合、これは問題ではありません ;-)
お役に立てれば!