當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Java ConcurrentSkipListSet用法及代碼示例


ConcurrentSkipListSetJava 中的類是Java集合框架並實施采集接口AbstractSet 類。它提供了可擴展的並發版本Java 中的NavigableSet。 ConcurrentSkipListSet的實現基於ConcurrentSkipListMap。 ConcurrentSkipListSet 中的元素默認按自然順序或按Comparator Interface在設定的創建時間提供,具體取決於使用哪個構造函數。

由於它實現了排序集<E>導航集<E>,它類似於TreeSet具有並發的附加函數。由於它是線程安全的,因此可以由多個線程同時使用,而 TreeSet 不是線程安全的。

類層次結構:

ConcurrentSkipListSet-in-Java

聲明:

public class ConcurrentSkipListSet<E>
    extends AbstractSet<E>
        implements NavigableSet<E>, Cloneable, Serializable

Where E is the type of elements maintained by this collection

ConcurrentSkipListSet 的一些要點:

  • 它實現了可串行化,可克隆,可迭代<E>,集合<E>,導航集<E>,設置<E>,SortedSet Interface接口。
  • 它不允許 null 元素,因為 null 參數和返回值無法可靠地區分元素是否缺失。
  • 它的實現提供了包含、添加和刪除操作及其變體的平均 log(n) 時間成本。
  • 它是線程安全的。
  • 當需要並發修改集合時,它應該優先於實現Set接口。

構造函數:

1.ConcurrentSkipListSet():該構造函數用於構造一個空集。

ConcurrentSkipListSet<E> set = new ConcurrentSkipListSet<E>();

2. ConcurrentSkipListSet(Collection<E> c):該構造函數用於構造一個集合,並將 Collection 的元素作為參數傳遞。

ConcurrentSkipListSet<E> set = new ConcurrentSkipListSet<E>(Collection<E> c);

3. ConcurrentSkipListSet(Comparator<E> comparator):此構造函數用於構造一個新的空集,該集根據指定的比較器對其元素進行排序。

ConcurrentSkipListSet<E> set = new ConcurrentSkipListSet<E>(Comparator<E> comparator);

4. ConcurrentSkipListSet(SortedSet<E> s):該構造函數用於構造一個包含相同元素並使用與指定排序集相同的順序的新集。

ConcurrentSkipListSet<E> set = new ConcurrentSkipListSet<E>(SortedSet<E> s);

示例 1:

Java


// Java program to demonstrate ConcurrentSkipListSet 
  
import java.util.*; 
import java.util.concurrent.ConcurrentSkipListSet; 
  
class ConcurrentSkipListSetLastExample1 { 
    public static void main(String[] args) 
    { 
  
        // Initializing the set using 
        // ConcurrentSkipListSet() 
        ConcurrentSkipListSet<Integer> set 
            = new ConcurrentSkipListSet<Integer>(); 
  
        // Adding elements to this set 
        set.add(78); 
        set.add(64); 
        set.add(12); 
        set.add(45); 
        set.add(8); 
  
        // Printing the ConcurrentSkipListSet 
        System.out.println("ConcurrentSkipListSet: " + set); 
  
        // Initializing the set using 
        // ConcurrentSkipListSet(Collection) 
        ConcurrentSkipListSet<Integer> set1 
            = new ConcurrentSkipListSet<Integer>(set); 
  
        // Printing the ConcurrentSkipListSet1 
        System.out.println("ConcurrentSkipListSet1: "
                           + set1); 
  
        // Initializing the set using 
        // ConcurrentSkipListSet() 
        ConcurrentSkipListSet<String> set2 
            = new ConcurrentSkipListSet<>(); 
  
        // Adding elements to this set 
        set2.add("Apple"); 
        set2.add("Lemon"); 
        set2.add("Banana"); 
        set2.add("Apple"); 
  
        // creating an iterator 
        Iterator<String> itr = set2.iterator(); 
  
        System.out.print("Fruits Set: "); 
        while (itr.hasNext()) { 
            System.out.print(itr.next() + " "); 
        } 
    } 
}

輸出:

ConcurrentSkipListSet: [8, 12, 45, 64, 78]
ConcurrentSkipListSet1: [8, 12, 45, 64, 78]
Fruits Set: Apple Banana Lemon 


示例2:

Java


// Java program to demonstrate ConcurrentSkipListSet 
  
import java.util.concurrent.ConcurrentSkipListSet; 
  
class ConcurrentSkipListSetLastExample1 { 
    
    public static void main(String[] args) 
    { 
  
        // Initializing the set using ConcurrentSkipListSet() 
        ConcurrentSkipListSet<Integer> 
            set = new ConcurrentSkipListSet<Integer>(); 
  
        // Adding elements to this set 
        // using add() method 
        set.add(78); 
        set.add(64); 
        set.add(12); 
        set.add(45); 
        set.add(8); 
  
        // Printing the ConcurrentSkipListSet 
        System.out.println("ConcurrentSkipListSet: "
                           + set); 
  
        // Printing the highest element of the set 
        // using last() method 
        System.out.println("The highest element of the set: "
                           + set.last()); 
  
        // Retrieving and removing first element of the set 
        System.out.println("The first element of the set: "
                           + set.pollFirst()); 
  
        // Checks if 9 is present in the set 
        // using contains() method 
        if (set.contains(9)) 
            System.out.println("9 is present in the set."); 
        else
            System.out.println("9 is not present in the set."); 
  
        // Printing the size of the set 
        // using size() method 
        System.out.println("Number of elements in the set = "
                           + set.size()); 
    } 
}

輸出:

ConcurrentSkipListSet: [8, 12, 45, 64, 78]
The highest element of the set: 78
The first element of the set: 8
9 is not present in the set.
Number of elements in the set = 4

ConcurrentSkipListSet 的方法

METHOD

DESCRIPTION

ConcurrentSkipListSet add() 如果指定元素尚不存在,則將其添加到該集合中。
ConcurrentSkipListSet ceiling() 返回該集合中大於或等於給定元素的最小元素,如果不存在這樣的元素則返回 null。
ConcurrentSkipListSet clear() 刪除該集合中的所有元素。
ConcurrentSkipListSet clone() 返回此 ConcurrentSkipListSet 實例的淺拷貝。
ConcurrentSkipListSet comparator() 返回用於對該集合中的元素進行排序的比較器,如果該集合使用其元素的自然排序,則返回 null。
ConcurrentSkipListSet contains() 如果此集合包含指定元素,則返回 true。
ConcurrentSkipListSet descendingIterator() 按降序返回此集合中元素的迭代器。
ConcurrentSkipListSet descendingSet() 返回此集合中包含的元素的逆序視圖。
ConcurrentSkipListSet equals() 比較指定對象與該集合是否相等。
ConcurrentSkipListSet first() 返回當前集合中的第一個(最低)元素。
ConcurrentSkipListSet floor() 返回該集合中小於或等於給定元素的最大元素,如果沒有這樣的元素,則返回 null。
ConcurrentSkipListSet headSet() 返回此集合中元素嚴格小於 toElement 的部分的視圖。
ConcurrentSkipListSet headSet() 返回此集合中元素小於(或等於,如果包含為 true)toElement 的部分的視圖。
ConcurrentSkipListSet higher() 返回此集合中嚴格大於給定元素的最小元素,如果不存在這樣的元素,則返回 null。
ConcurrentSkipListSet isEmpty() 按升序返回此集合中元素的迭代器。
ConcurrentSkipListSet last() 返回當前集合中的最後一個(最高)元素。
ConcurrentSkipListSet lower() 返回該集合中嚴格小於給定元素的最大元素,如果不存在這樣的元素,則返回 null。
ConcurrentSkipListSet pollFirst() 檢索並刪除第一個(最低)元素,如果該集合為空,則返回 null。
ConcurrentSkipListSet pollLast() 檢索並刪除最後一個(最高)元素,如果該集合為空,則返回 null。
ConcurrentSkipListSet remove() 從此集合中刪除指定元素(如果存在)。
ConcurrentSkipListSet removeAll() 從此集合中刪除指定集合中包含的所有元素。
ConcurrentSkipListSet size() 返回該集合中的元素數量。
ConcurrentSkipListSet spliterator() 返回該集合中元素的 Spliterator。

ConcurrentSkipListSet subSet()

ConcurrentSkipListSet subSet()

返回此集合中元素範圍從 fromElement 到 toElement 的部分的視圖。
ConcurrentSkipListSet subSet() 返回此集合的部分視圖,其元素範圍從 fromElement(包括)到 toElement(不包括)。
ConcurrentSkipListSet tailSet() 返回此集合中元素大於或等於 fromElement 的部分的視圖。
ConcurrentSkipListSet tailSet() 返回此集合中元素大於(或等於,如果包含為 true)fromElement 的部分的視圖。

從類 java.util.AbstractSet 繼承的方法

METHOD

DESCRIPTION

AbstractSet.hashCode() 返回該集合的哈希碼值。

從類 java.util.AbstractCollection 繼承的方法

METHOD

DESCRIPTION

AbstractCollection addAll() 將指定集合中的所有元素添加到此集合中(可選操作)。
AbstractCollection containsAll() 如果此集合包含指定集合中的所有元素,則返回 true。
AbstractCollection retainAll() 僅保留此集合中包含在指定集合中的元素(可選操作)。
AbstractCollection toArray() 返回一個包含此集合中所有元素的數組。
AbstractCollection toArray() 返回一個包含該集合中所有元素的數組;返回數組的運行時類型是指定數組的運行時類型。
AbstractCollection toString() 返回此集合的字符串表示形式。

從接口 java.util.Set 繼承的方法

METHOD

DESCRIPTION

Set addAll() 如果指定集合中的所有元素尚不存在,則將它們添加到該集合中(可選操作)。
Set containsAll() 如果此集合包含指定集合的所有元素,則返回 true。
Set hashCode() 返回該集合的哈希碼值。
Set retainAll() 僅保留此集中包含在指定集合中的元素(可選操作)。
Set toArray() 返回一個包含該集合中所有元素的數組。
Set toArray() 返回一個包含該集合中所有元素的數組;返回數組的運行時類型是指定數組的運行時類型。

從接口 java.util.Collection 繼承的方法

METHOD

DESCRIPTION

parallelStream() 返回一個可能並行的 Stream 並以此集合作為其源。
removeIf(Predicate<? super E> 過濾器) 刪除此集合中滿足給定謂詞的所有元素。
stream() 返回以此集合作為源的順序 Stream。

從接口 java.lang.Iterable 繼承的方法

METHOD

DESCRIPTION

Iterable forEach() 對 Iterable 的每個元素執行給定的操作,直到處理完所有元素或該操作引發異常。


相關用法


注:本文由純淨天空篩選整理自RishabhPrabhu大神的英文原創作品 ConcurrentSkipListSet in Java with Examples。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。