ハッシュマップとハッシュテーブルの拡張メカニズムは何ですか?
HashMapとHashtableは要素の数が一定の閾値に達すると、拡張処理が実行されます。拡張の仕組みは似ていますが、いくつかの違いもあります。
ハッシュマップのリサイズメカニズム:
- 初期化時に、デフォルトサイズの配列が作成され、要素数が配列サイズの75%に達すると、容量拡張がトリガーされます。
- 拡張操作は、元の配列の要素を新しい2倍のサイズの配列に再計算してハッシュ値を再配置します。
- 要扩容操作是需要重新计算哈希值并重新放置元素,所以比较耗时。
ハッシュテーブルの拡張メカニズム:
- 初期化時には、デフォルトサイズの配列が作成され、要素数が配列サイズの75%になると拡張操作がトリガーされます。
- 拡張操作は、新しい2倍のサイズの配列を作成し、元の配列の要素のハッシュ値を再計算して新しい配列の対応する位置に配置します。
- Hashtableはスレッドセーフであるため、拡張操作時には同期ロックが使用され、これが拡張操作のパフォーマンスを低下させます。
基本的に、HashMapとHashtableは、要素の数が一定の閾値に達したときに拡張操作を行う拡張メカニズムを持っていますが、HashMapの方がHashtableよりも拡張のパフォーマンスが良いです。