26

なぜLinkedListがないのだろうかinitialCapacity

いつ、どのようなときに を使用するかをよく知っていArrayListますLinkedList

コレクションの最終サイズを次のように定義することをお勧めします。

List<String> arraylist = new ArrayList<String>(5);

たとえばLinkedList、次のとおりです。

List<String> linkedlist = new LinkedList<String>(); // right way

しかし

List<String> arraylist = new LinkedList<String>(5); // compilation error

誰かがその問題に光を当てることができますか?

[編集]

ところで、私は書くことができます

List<String> arraylist = new ArrayList<String>(5);
List<String> linkedlist = new LinkedList<String>(arraylist);
4

7 に答える 7

1

Linkedlist は初期値を必要としません。それが配列と連結リストの主な違いです。

配列はどこかで終了します。しかし、リンクリストではありません。連結リストは境界値では機能しません。

于 2013-09-27T12:07:40.907 に答える
1

配列を宣言するときは、ポインタをメモリ内に作成する必要があるため、そのサイズを知る必要があります。オブジェクトがリストに追加される前にメモリへのポインターが必要ないため、リンクされたリストはこれを必要としません。

リンクされたリストは次のように再帰的に定義されます: 空のリスト 空のリストを指す要素

したがって、要素を追加するときはいつでも、要素を作成するときにメモリを割り当てます (または Java ではコンパイラがこれを行います)。次に、それをリストに追加すると、リストを指すようになります (またはリストポイントの最後の要素が指すようになります)。それに)。

したがって、連結リストは常に空のリストで始まり、要素が追加されるとリストを指すため、連結リストの初期サイズを宣言する必要はありません。

于 2013-09-27T12:11:53.380 に答える