Javaでは、配列と配列リストに4つの要素を格納する場合、それはメモリの低レベルで同じですか、それとも要素を格納するために何か違いがありますか?
3 に答える
それは違うでしょう。ArrayListは、他のいくつかのヘルパー関数を使用した配列のラッパーです。ArrayListのメモリフットプリントは少し大きくなり、必要に応じてサイズが変更されます。
それは異なり、ArrayList
ストレージ用に独自のアレイを内部的に管理し、独自の属性も持っています
リストがたまたまArrayListであり、内部的にも配列のみを使用している場合でも、配列はリストとはかなり異なります。
配列の場合、配列だけが存在します(この説明では、要素が占有するメモリは無視します)。したがって、ヒープ内に1つのオブジェクト、配列自体があります。
ArrayListの場合、ArrayListインスタンスが存在し、そのインスタンスには内部的に配列があります。したがって、ヒープには2つのオブジェクトがあります。また、作成する配列のサイズを正確に制御できますが、ArrayListが保持する配列は、要素数<=Integer.MAX_VALUEの任意のサイズにすることができます。
偶然にも、ArrayListは要素インデックスを内部で配列インデックスとして直接使用するため、要素の順序はプレーン配列の場合と同じです。しかし、これは実装の詳細であり、通常、リストがデータを内部でどのように編成するかは気にしません(リストの目的は、厄介な詳細を抽象化することです)。