2

Java の arraylist に関するこのインタビューの質問に出くわしました。非常に興味深いと思いますが、答え方の手がかりがありません。

What attention should be paid when using arrayList to store large object?

時間/空間の複雑さに関して、この質問に答えるべきでしょうか?

ありがとう

4

3 に答える 3

8

Java のすべてのオブジェクトは、コンテナーや変数などに参照として格納されるため、C++ の用語では、すべてのコンテナーはオブジェクトへのポインターのみを格納します。このような状況では、オブジェクトのサイズは、すべてではないにしてもほとんどのユースケースに関係ありません。

于 2013-03-13T09:14:37.647 に答える
0

ArrayList は、必要に応じて拡張できる動的配列をサポートします。Java では、配列は固定長です。つまり、配列が作成された後は、配列を拡大または縮小することはできません。つまり、配列が保持する要素の数を事前に知っておく必要があります。ただし、実行時までサイズがわからない場合があるため、この状況では ArrayList を使用しました。ArrayList は、サイズを動的に増減できます。配列リストは初期サイズで作成されます。このサイズを超えると、コレクションは自動的に拡大されます。オブジェクトが削除されると、配列が縮小される場合があります。また、Arraylist はオブジェクトのみを格納することに注意してください。

于 2013-03-13T11:51:47.180 に答える
0

内部的に ArrayList は Object[] を使用します。最大容量に達すると、元のサイズの 1.5 倍のサイズの新しい配列が作成され、古い配列から新しい配列にコピーされます。インタビュアーは、大きなオブジェクトを含むこのコピーのコストについて確認したかったのかもしれません

ArrayList: サイズはどのように増加しますか?

ensureCapacity() を確認してください - http://www.docjar.com/html/api/java/util/ArrayList.java.html

于 2013-03-13T09:24:36.247 に答える