0

ArrayList では、基本的に grow メソッドを使用して新しいサイズに成長します。

private void grow(int minCapacity) {
...
...
elementData = Arrays.copyOf(elementData, newCapacity);
}

HashMap では、コンテンツを新しい配列に再ハッシュすると述べています。

Entry[] newTable = new Entry[newCapacity];
...
transfer(...)

arraylist では、 をArrays.copyOf呼び出しますSystem.arraycopy。HashMap では、while ループを使用してすべての要素を新しい配列に転送します。どちらも最終的に新しい配列を作成するため、これら 2 つのコレクションの間に特定の違いはありますか?

4

2 に答える 2

1

ハッシュマップは、通常の配列とはまったく異なる働きをします。主な目的は、すべての要素を反復処理することなく、ハッシュマップ内の任意のオブジェクトに直接アクセスできるようにすることです。これは、マップへの直接インデックスのように機能する「ハッシュ値」を計算することによって行われます (マップのサイズをモジュロ)。そのスロットがすでに使用されている場合にのみ、他の措置が取られ、

ハッシュマップのサイズを大きくすると、要素をハッシュマップ内で再配置する必要があります。

より良い説明については、Wikipedia の記事などを確認してください。

于 2013-11-05T13:15:43.417 に答える