6

Java では、単方向リストに整数値を格納し、リストに格納されている要素を出力するように求められました。これが私が思いついたものです:

int max = 10;
List<Integer> list = new ArrayList<Integer>();

for (int num = 0; i < max; i++){
     list.add(num);
}
System.out.print(list);

私が疑問に思っていたのは、ArrayList は単一リンク リストと同じものですか? 質問に正しく答えていることを確認したい。これは理にかなっていますか?ありがとう!

4

6 に答える 6

5

いいえ -ArrayListリンクされたリストではありません - 配列リストです。ArrayListはその要素を配列に格納しますが、リンクされたリストはオブジェクトをリンクすることによってそれらを任意のメモリに格納します。

LinkedListは二重連結リストであり、さまざまな単方向連結リストの実装を取得できると確信していますが、これが割り当てであることを考えると、誰かを使用してコードを渡そうとすると、マークダウンされるか、完全に失敗します他の実装。

代わりに、リンクされたリストについて説明している記事などを見つけて、自分で実装してみてください。

通常、これらはSomeClass、型と値の前方リンクを含むクラスを持つことによって Java で構築されSomeClassます。SomeClass順方向リンクを介して各インスタンスを次のインスタンスにリンクすることにより、リストを作成します。

于 2012-12-13T01:47:45.813 に答える
2

いいえ、単一リンクリストと同じでArrayListはありません。実際、これはリンクされたリストではありません。バッキング ストレージに配列を使用するリストです。これによりArrayList、順次アクセスする必要があるリンク リストとは対照的に、任意の順序でアクセスできます。

Java ライブラリには二重リンク リストがありますが、単一リンク リストはありません。自分で書く必要があります。

インターネット上で利用できる優れた実装がいくつかあります。codereview サイトでこの回答を見て、独自の単一リンク リストを実装する方法についていくつかのアイデアを得てください。

于 2012-12-13T01:43:57.157 に答える
1

いいえ、バッキング配列を使用してデータを格納するインターフェイスArrayListの実装です。割り当てでは、独自の単一リンクの実装を作成する必要があるようです。List List

于 2012-12-13T01:43:22.310 に答える
1

いいえ、ArrayList配列によってサポートされています。配列は連続したストレージを利用します (つまり、配列の開始 + 配列に格納されているもののサイズのオフセット == 次の要素)。Java にはLinkedListクラスがありますが、これは二重にリンクされたリストです。つまり、前の要素への参照と次の要素への参照の 2 つの参照が含まれています。

Java には、組み込みのデータ構造として単一リンク リストはありません。質問は、単一リンクリストの独自の実装を作成するように求めているか、それを使用すると言われているときに間違っています。

于 2012-12-13T01:45:22.327 に答える
0

商業生活ではあなたのソリューションは完璧ですが、残念ながら標準Javaには存在しない単一リンクリストを使用するように要求されているようです。(そしてあまり意味がありません) トレーニングの目的のために、独自のリストを作成する必要があります。

于 2012-12-13T01:49:34.830 に答える