JavaプログラミングにおけるArrayListとCopyOnWriteArrayListの違い。
ArrayListとCopyOnWriteArrayListはどちらも、JavaでのListインターフェースの実装です。ただし、特定の違いもあります。
以下は、ArrayListとCopyOnWriteArrayListの重要な違いです。
Sr。いいえ。 | キー | ArrayList | CopyOnWriteArrayList |
---|---|---|---|
1 | 同期 | ArrayListは本質的に同期されていません。 | 一方、CopyOnWriteArrayListは本質的に同期されます。つまり、一度に1つのスレッドのみがオブジェクトにアクセスできます。 |
2 | パフォーマンス | ArrayListは、操作に同期がないため高速です。 | 同期すると、CopyOnWriteArrayListのパフォーマンスが低下します。 |
3 | フェイルセーフ | ArrayListイテレータは高速で失敗し、トラバース中の変更時にConcurrentModificationExceptionをスローします。 | CopyOnWriteArrayListはフェイルセーフであり、トラバース中に変更できます。 |
4 | 要素を削除 | ArrayListのイテレータは、反復中に削除操作を実行できます。 | CopyOnWriteArrayListは、反復中に削除操作を実行できません。実行しないと、実行時例外UnsupportedOperationExceptionがスローされます。 |
5 | Javaの概要 | ArrayListは、Javaバージョン1.2で追加されたため、CopyOnWriteArrayListよりも古いものです。 | CopyOnWriteArrayListクラスは、Javaバージョン1.5(またはJava 5)で追加されました。 |
6 | パッケージ | ArrayListクラスはjava.utilパッケージに含まれています。 | CopyOnWriteArrayListクラスはjava.util.concurrentパッケージに存在します。 |
ArrayListとCopyOnWriteArrayListの例
ArrayListDemo.java
import java.util.*; public class ArrayListDemo{ public static void main(String[] args){ ArrayList l = new ArrayList(); l.add("A"); l.add("B"); l.add("C"); Iterator itr = l.iterator(); while (itr.hasNext()){ String s = (String)itr.next(); if (s.equals("B")){ itr.remove(); } } System.out.println(l); } }
出力
[A,C]
例
CopyOnWriteArrayListDemo.java
import java.util.concurrent.CopyOnWriteArrayList; import java.util.*; class CopyOnWriteArrayListDemo extends Thread { static CopyOnWriteArrayList l = new CopyOnWriteArrayList(); public static void main(String[] args) throws InterruptedException{ l.add("A"); l.add("B"); l.add("C"); Iterator itr = l.iterator(); while (itr.hasNext()){ String s = (String)itr.next(); System.out.println(s); if (s.equals("B")){ // Throws RuntimeException itr.remove(); } Thread.sleep(1000); } System.out.println(l); } }
出力
A B Exception in thread "main" java.lang.UnsupportedOperationException
-
JavaのArrayList.clear()とArrayList.removeAll()の違いは?
JavaのArrayListクラスは、ListインターフェースのResizable-array実装です。 null値を許可します。 clear() このクラスのメソッドは、現在のListオブジェクトからすべての要素を削除します。 例 import java.util.ArrayList; public class ClearExample { public static void main(String[] args){ //Instantiating an ArrayList object &
-
JavaでのArrayListとHashSetの違い
HashSetとArrayListはどちらも、Javaコレクションフレームワークの最も重要なクラスの一部です。 以下は、ArrayListとHashSetの重要な違いです。 Sr。いいえ。 キー ArrayList ハッシュセット 1 実装 ArrayListはリストインターフェイスの実装です。 一方、 HashSetは、セットインターフェイスの実装です。 2 内部実装 ArrayListは、その実装のために配列を内部的に実装します。 HashSetは、実装にHashmapを内部的に使用します。 3 要素の順序 ArrayListは、挿入順序、つまり