从 Java TreeMap 获取同步地图

2023年 9月 2日 116.3k 0

从 Java TreeMap 获取同步地图

要从 Java 中的 TreeMap 获取同步 Map,我们可以使用 Collection 接口的内置方法“synchronizedMap()”。这里,TreeMap是一个用于实现NavigableMap接口的类。它将地图的元素存储在树结构中。它提供了一种按排序顺序存储键值对的有效替代方法。默认情况下,TreeMap 不同步。在本文中,我们将通过示例程序来解释同步的必要性及其实际实现。

树状地图的同步地图

树图不是线​​程安全的,这意味着当我们在多线程环境中实现它时,多个线程可以同时访问和修改它,而无需任何协调。这可能会导致数据不一致和元素的意外行为。它还可能影响操作的结果。

因此,我们需要使用synchronizedMap()来同步对TreeMap元素的访问。此方法在原始 TreeMap 周围创建一个包装器,并在线程尝试访问或修改它时锁定它。

synchronizedMap() 是 Collections 类的静态方法,它将 TreeMap 集合的实例作为参数并从中返回一个同步的 Map。

语法

Collections.synchronizedMap(instanceOfTreeMap);

登录后复制

这里,“Collections”是集合接口的一个类。

TreeMap 的一般语法如下 -

语法

TreeMap nameOfMap = new TreeMap();

登录后复制

方法

  • 首先,导入“java.util”包以启用 TreeMap 类。

  • 然后,创建一个 TreeMap,其中键为 String 类型,值为
    整数类型。

  • 使用内置方法“put()”在集合中存储一些元素

  • 现在,同步这些元素并将它们存储在 Map 类型的变量中。

  • 最后,打印新的同步地图并退出。

示例 1

下面的示例说明了如何使用synchronizedMap() 来同步指定的 TreeMap。

import java.util.*;
public class Maps {
public static void main(String[] args) {
TreeMap cart = new TreeMap();
// Adding elements in the cart map
cart.put("Butter", 5);
cart.put("Milk", 10);
cart.put("Rice", 20);
cart.put("Bread", 2);
cart.put("Peanut", 2);
// print synchronized map from TreeMap
Map mapSynched = Collections.synchronizedMap(cart);
System.out.println("Synchronized Map from TreeMap: " + mapSynched);
}
}

登录后复制

输出

Synchronized Map from TreeMap: {Bread=2, Butter=5, Milk=10, Peanut=2, Rice=20}

登录后复制

方法

  • 首先,导入“java.util”包以启用 TreeMap 类。

  • 然后,创建一个 TreeMap,其中键为 String 类型,值为 Integer type

  • 使用内置方法“put()”在集合中存储一些元素

  • 现在,使用synchronizedMap()方法同步这些元素并将它们存储在新的Map集合中。

  • 最后,定义一个同步块。在此块内,采用 for-each 循环使用“keySet()”方法打印项目。

示例2

在下面的示例中,我们将使用synchronizedMap()方法和一个synchronized块来同步给定的TreeMap

import java.util.*;
public class Maps {
public static void main(String[] args) {
TreeMap cart = new TreeMap();
// Adding elements in the cart map
cart.put("Butter", 5);
cart.put("Milk", 10);
cart.put("Rice", 20);
cart.put("Bread", 2);
cart.put("Peanut", 2);
// creating new synchronized Map
Map mapSynched = Collections.synchronizedMap(cart);
System.out.println("Synchronized Map from TreeMap: " );
// printing synchronized map from TreeMap
synchronized (mapSynched) {
for (String unKey : mapSynched.keySet()) {
System.out.println("Item: " + unKey + ", Quantity: " +
cart.get(unKey));
}
}
}
}

登录后复制

输出

Synchronized Map from TreeMap:
Item: Bread, Quantity: 2
Item: Butter, Quantity: 5
Item: Milk, Quantity: 10
Item: Peanut, Quantity: 2
Item: Rice, Quantity: 20

登录后复制

结论

同步是在两个或多个活动之间建立协调并确保正确通信的过程。由于TreeMap不同步可能会导致数据不一致,因此我们需要对其进行同步。内置方法“Collections.synchronizedMap()”是执行此任务的更方便的方法。

以上就是从 Java TreeMap 获取同步地图的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论