ホームページ >Java >&#&チュートリアル >Java における HashMap と Hashtable: いつどちらを選択すべきですか?
HashMap と Hashtable: Java の主な違い
はじめに
Java では、両方の HashMapおよび Hashtable は、キーと値のペアを格納するために使用される多用途のデータ構造です。ただし、それらの間には、特定のアプリケーションへの適合性に影響を与える可能性のある重要な違いがいくつかあります。
同期
主な違いは、同期動作にあります。ハッシュテーブルは同期されたデータ構造であり、その操作はすべてスレッドセーフであることを意味します。スレッド同期によって非スレッド アプリケーションの操作が遅くなる可能性があるため、これにはパフォーマンスが犠牲になります。一方、
HashMap は非同期データ構造です。これにより、スレッド セーフの追加オーバーヘッドを必要としない非スレッド アプリケーションの処理が本質的に高速になります。
Null 値とキー
もう 1 つの違いは、その処理にあります。 null 値とキーの。 Hashtable では、null キーまたは値は許可されません。対照的に、HashMap では 1 つの null キーと任意の数の null 値が許可されます。この柔軟性は、特定のシナリオでは有利です。
反復順序とサブクラス
HashMap と Hashtable は、反復順序の点でも異なります。 HashMap は特定の挿入順序を維持しませんが、Hashtable はキーと値のペアが挿入されたときの順序を維持します。
さらに、HashMap には、予測可能な反復順序を提供する LinkedHashMap と呼ばれるサブクラスがあります。予測可能な反復順序が要件の場合は、HashMap を LinkedHashMap に簡単に交換できます。このオプションは Hashtable では使用できません。
推奨事項
同期が問題にならない非スレッド アプリケーションの場合は、非同期であるため、HashMap が通常より効率的な選択肢です。自然。ただし、同期が必要になった場合は、Hashtable のパフォーマンス オーバーヘッドなしでスレッド セーフを提供する ConcurrentHashMap の使用を検討できます。
以上がJava における HashMap と Hashtable: いつどちらを選択すべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。