9 Nisan 2018 Pazartesi

CopyOnWriteArrayList Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.util.concurrent.CopyOnWriteArrayList;
Açıklaması şöyle.
As name suggest CopyOnWriteArrayList creates copy of underlying ArrayList with every mutation operation e.g. add or set. Normally CopyOnWriteArrayList is very expensive because it involves costly Array copy with every write operation but its very efficient if you have a List where Iteration outnumber mutation e.g. you mostly need to iterate the ArrayList and don't modify it too often.
Örnek
Iterator alındıktan sonra listeye ekleme yapılsa bile ConcurrentModificationException fırlatılmaz. Şöyle yaparız.
List<String> l = new CopyOnWriteArrayList<>();
l.add("a");
l.add("b");
l.add("c");
Iterator<String> itr = l.iterator();
l.add("d");
while (itr.hasNext()) {
  String s = itr.next();
  System.out.println(s);
}
System.out.println(l);
Çıktı olarak şunu alırız.
a
b
c
[a, b, c, d]
constructor
Şöyle yaparız.
List<String> list = new CopyOnWriteArrayList<>();
constructor - Collection
Şöyle yaparız.
Collection<String> c = ...;
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>(c);
add metodu
Şöyle yaparız.
list.add("a");
iterator metodu
Şöyle yaparız.
List<String> list = new CopyOnWriteArrayList<>();
...
Iterator<String> itr = list.iterator();


Hiç yorum yok:

Yorum Gönder