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
广告
© . All rights reserved.