Javaでの同時ハッシュマップと同期ハッシュマップの違い
並行ハッシュマップは、jdk1.5で導入されたクラスです。同時ハッシュマップは、マップの追加または更新中にフラグメントと呼ばれるバケットレベルでのみロックを適用します。したがって、同時ハッシュマップを使用すると、マップへの読み取りと書き込みの同時操作が可能になります。
Synchronized hashmap(Collection.syncronizedHashMap())は、コレクションフレームワークのメソッドです。このメソッドは、コレクション全体にロックを適用します。したがって、1つのスレッドがマップにアクセスしている場合、他のスレッドは同じマップにアクセスできません。
Sr。いいえ。 | キー | ||
---|---|---|---|
1 | 実装 | これは、並行ハッシュマップとシリアル化可能なインターフェイスを実装するクラスです。 | これはCollectionクラスのメソッドです。 |
2 | ロックメカニズム | 部分をロックします | マップ全体をロックします。 |
3 | パフォーマンス | 同時ハッシュマップにより、読み取りと書き込みを同時に行うことができます。したがって、パフォーマンスは同期マップよりも比較的優れています。 | 複数のスレッドが同時にマップにアクセスすることはできません。したがって、パフォーマンスは同時ハッシュマップよりも比較的低くなります。 |
4 | ヌルキー | キーまたは値としてnullを許可しません。 | キーとしてnullを許可します。 |
5 | 同時変更の例外 | 同時変更例外をスローしません。 | 同期マップによるイテレータの戻りが同時変更例外をスローする |
SynchronizedMapの例
public class SynchronizedMapExample { public static void main(String[] args) { Map<Integer,String> laptopmap = new HashMap<Integer,String>(); laptopmap.put(1,"IBM"); laptopmap.put(2,"Dell"); laptopmap.put(3,"HCL"); // create a synchronized map Map<Integer,String> syncmap = Collections.synchronizedMap(laptopmap); System.out.println("Synchronized map is : "+syncmap); } }
ConcurrentHashMapの例
public class ConcurrentHashMapExample { public static void main(String[] args) { //ConcurrentHashMap Map<Integer,String> laptopmap = new ConcurrentHashMap<Integer,String>(); laptopmap.put(1,"IBM"); laptopmap.put(2,"Dell"); laptopmap.put(3,"HCL"); System.out.println("ConcurrentHashMap is: "+laptopmap); } }
-
Javaでのイテレータと列挙の違い
IteratorとEnumerationはどちらも、コレクションの要素をトラバースしてアクセスするためのカーソルです。どちらもコレクションフレームワークに属しています。列挙は、コレクションフレームワークのJDK1.2バージョンのJDK1.0およびIteratorで追加されました。 コレクション内の要素への読み取り専用アクセス権があるため、列挙型はコレクション内の構造を変更できません。次の方法があります: * hasMoreElements() * nextElement() 一方、イテレータはコレクション内の要素を読み取って削除できます。以下の方法があります- * hasNe
-
JavaでのArrayListとHashSetの違い
HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり