Giriş
Açıklaması şöyle. Yani ConcurrentSkipListSet aslında TreeSet gibidir.
Açıklaması şöyle. Yani ConcurrentSkipListSet aslında TreeSet gibidir.
Java Collection Framework have ConcurrentSkipListMap and ConcurrentSkipListSet which are concurrent replacement for TreeMap and TreeSet. These classes implement SortedMap and SortedSet interface respectively.
TreeSetSet Yerine List İstersek
Eğer bu sınıf yerine bir List kullanmak istersek sanırım en uygun olanı ConcurrentLinkedQueue olur
Ne Avantaj Getirir
Açıklaması şöyle. Getirdiği en büyük avantaj yazma işlemi yapılırken bir kısım reader'ların halen okumaya devam edebilmesi.
A ConcurrentSkipListSet uses the Skip List data structure and so can be updated and iterated by multiple threads concurrently without breaking without using locks. It is therefore much faster than implementing a locking regime on an ordinary Set.
SkipList Data Fazla Bellek Kullanır
SkipList'in nasıl çalıştığını gösteren bir yazı burada. Yani SkipList normal LinkedList'e göre daha fazla bellek kullanıyor. Sebebi ise balanced binary tree yapısını bir liste şeklinde tutması.
constructor
Set'e eklenecek nesnelerin Comparable arayüzünü gerçekleştirmesi gerekir.
constructor - Comparator
Comparator sayesinde nesnelerin denk olup olmadığı anlaşılır. Eğer denk değilse sıralama işlemi için yine Comparator'ın döndürdüğü değer kullanılır.
Örnek
Şöyle yaparız
Şöyle yaparız
add metodu
Örnek ver.
addAll metodu
Örnek ver.
iterator metodu
Açıklaması şöyle. SynchronizedRandomAccessList sınıfında olduğu gibi veriyapısını kilitlemeye gerek kalmaz.
Şöyle yaparız.
Örnek ver.
removeAll metodu
Örnek ver.
constructor - Comparator
Comparator sayesinde nesnelerin denk olup olmadığı anlaşılır. Eğer denk değilse sıralama işlemi için yine Comparator'ın döndürdüğü değer kullanılır.
Örnek
Şöyle yaparız
ConcurrentSkipListSet<Emp> set = new ConcurrentSkipListSet(new Comparator<Emp>(){
@Override
public int compare(Emp o1, Emp o2) {
...
}
});
ÖrnekŞöyle yaparız
Set<Emp> set = new ConcurrentSkipListSet(Comparator.comparing(e -> e.empid));
Örnek ver.
addAll metodu
Örnek ver.
iterator metodu
Açıklaması şöyle. SynchronizedRandomAccessList sınıfında olduğu gibi veriyapısını kilitlemeye gerek kalmaz.
ÖrnekIterators are weakly consistent, returning elements reflecting the state of the set at some point at or since the creation of the iterator. They do not throw ConcurrentModificationException, and may proceed concurrently with other operations.
Şöyle yaparız.
for(Foo foo : fooSet) {
//do stuff
}
remove metoduÖrnek ver.
removeAll metodu
Örnek ver.