Hazelcast - ISet



java.util.Set 提供了一個介面,用於儲存唯一物件的集合。元素的順序無關緊要。

類似地,ISet 實現的是 Java Set 的分散式版本。它提供類似的功能:add、forEach 等。

關於 ISet 需要注意的一點是,與其他集合資料不同,它沒有分割槽。所有資料都儲存/存在於單個 JVM 上。所有 JVM 仍然可以訪問資料,但該集合無法擴充套件到單個機器/JVM 之外。

該集合支援同步備份和非同步備份。同步備份確保即使儲存集合的 JVM 宕機,所有元素都將被保留並可從備份中獲取。

讓我們來看一個有用函式的示例。

新增元素和讀取元素

讓我們在兩個 JVM 上執行以下程式碼。一個 JVM 上執行生產者程式碼,另一個 JVM 上執行消費者程式碼。

示例

第一部分是生產者程式碼,它建立一個集合並向其中新增專案。

public static void main(String... args) throws IOException, InterruptedException {
   //initialize hazelcast instance
   HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance();
   // create a set
   ISet<String> hzFruits = hazelcast.getSet("fruits");
   hzFruits.add("Mango");
   hzFruits.add("Apple");
   hzFruits.add("Banana");
   // adding an existing fruit
   System.out.println(hzFruits.add("Apple"));
   System.out.println("Size of set:" + hzFruits.size());
   System.exit(0);
}

第二部分是消費者程式碼,它讀取集合元素。

public static void main(String... args) throws IOException, InterruptedException {
   //initialize hazelcast instance
   HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance();
   // create a set
   ISet<String> hzFruits = hazelcast.getSet("fruits");
   Thread.sleep(2000);
   hzFruits.forEach(System.out::println);
   System.exit(0);
}

輸出

生產者程式碼的輸出顯示它無法新增現有元素。

false
3

消費者程式碼的輸出列印集合大小和水果,順序可能不同。

3
Banana
Mango
Apple

有用方法

序號 函式名稱 & 描述
1

add(Type element)

如果元素不存在,則將其新增到集合中

2

remove(Type element)

從集合中移除元素

3

size()

返回集合中元素的數量

4

contains(Type element)

返回元素是否存在

5

getPartitionKey()

返回儲存集合的分割槽鍵

6

addItemListener(ItemListener<Type>listener, value)

通知訂閱者集合中元素被移除/新增/修改。

hazelcast_data_structures.htm
廣告