对于Map的处理和运用场景中,会很经常将其作为缓存空间,暂时存放一些需要很快处理的临时数据.
因为Map的使用可以通过key,直接取到Value,非常方便.但有一点,Map的遍历需要Iterator才能实现,这就给
动态(同时)添加,删除和遍历Map带来了问题.
因为在遍历Map的时候,iterator是在遍历前取出的,若,在遍历过程中,Map已经进行了新的删除操作,iterator将找不到对应指针.这就需要在遍历过程中对map进行同步操作.另外,在遍历过程中如果对Map进行删除操作需要使用iterator的删除,而不简单的map.remove(key).
public class Test { static Map cur_map = new HashMap(); static List time_list = new ArrayList(); public static void main(String[] arags) throws InterruptedException { //add new Thread(new Runnable() { public void run() { for (int i = 0; i cur_map) {//注意同步对象 Iterator it = cur_map.keySet().iterator(); while (it.hasNext()) { int key = Integer.parseInt(it.next().toString()); System.out.println("remove:" + key); it.remove();//需要使用这个方法来删除 //remove(key); } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); } public static void add(String k, String v) { synchronized (cur_map) {//注意同步对象 System.out.println("add:" + k); cur_map.put(k, v); long last = System.currentTimeMillis() + 2000; time_list.add(k + "@" + last); } } public static String remove(String k) { synchronized (cur_map) { return cur_map.remove(k); } } }
注意:需要对同一对象进行同步,,使用it.remove();
相关推荐
javascript 模拟 java中的 List,Map js文件为 js/utils.js IE6.0 测试通过 <br>List: add(var obj) //添加一个元素 remove(var index) //删除一个元素 get(var index) //获取一个元素 remove...
4.3 实体类中添加逻辑删除属性 4.4 测试 条件构造器和常用接口 1、wapper介绍 2、QueryWrapper(查询和删除) 2.1、组装查询条件 2.2、组装排序条件 2.3、组装删除条件 2.4、条件的优先级 2.5、组装select子句 2.6、...
主方法中作如下测试: 1)创建一个可放置Person类对象的HashSet; 2)依次添加上述5个对象到HashSet中; 3)把集合中的元素打印出来(使用迭代器Iterator) 2、编写程序练习List集合的基本使用: 1) 创建一个只能...
添加存储库: https://github.com/oleg-shilo/sublime-codemap.git : https://github.com/oleg-shilo/sublime-codemap.git 使用Package Control安装sublime-codemap 。 如果需要,请重新启动Sublime编辑器 您还...
勾选的已经实现 了,其他的都是我以后打算添加的。 在画布上拖放 照片 一个.map.json保存文件 通过滚动放大和缩小 中心点击平移 通过右键单击具有以下选项的区域来显示菜单: 设置网址 设置标题 删除 前进 向后移动...
3、只有暗夜管理帐号10000可以添加暗夜应用、设置相对年数、删除系统信息,其他帐号只能添加一般应用,测试帐号10000~10100,密码都是1 4、欢迎大家开发暗夜IM小应用,可以是独立的网页小应用程序,也可以是与暗夜...
(五) JTree右键菜单实现编辑、添加、删除节点 63 Test.java源代码 63 (六) 功能齐全的JTree例子 66 TreeEditTest.java源代码 66 (七) JTree控件的使用 70 构造函数: 70 TreeModel接口 70 DefaultTreeModel缺省版本 ...
简单分布式FTP 简单的分布式应用程序,用于从服务器组发送文件到服务器组。 这是分布式计算技术课程通过的项目之一。 它是使用RMI用Java编写的。 运行简单测试 ... 服务器动态数量(添加或删除服务器)
3.4 将iBATIS添加到应用程序中 49 3.4.1 在独立应用程序中使用iBATIS 50 3.4.2 在Web应用程序中使用iBATIS 50 3.5 iBATIS和JDBC 51 3.5.1 释放JDBC资源 51 3.5.2 SQL注入 51 3.5.3 降低复杂度 52 3.6 配置iBATIS(续)...
* "出行"页面在网络图模式下的背景仅仅是一张图片,现不知道如何去将其转换成可以交互的地图(map组件只能自定义样式,无法做到在图片上打点) * 各icon可能还需要自己画一下,网上找的感觉不太令人满意 * 本地...
(4)Demo中放入了测试用ak,开发者请申请并更换为自己的【服务端】ak; (5)开发者在LBS开放平台官网添加数据后需发布到检索并更换demo中的geoTableId; (6)其他注意事项请参考【CloudSearchDemoViewController....
如果configure_ip_masq为 true,则使用提供的non_masquerade_cidrs添加ip-masq-agent configmap 还提供了用于创建私有集群、beta 私有集群和 beta 公共集群的子模块。 测试版子模块允许使用各种 GKE 测试版功能。 ...
Java Web 程序设计教程 30 Student s=list.get(i);// System.out.println(s.getSno()+"," +s.getSname()+","+s.getScore());...实现该类并包含添加、删除、修改、按姓名查等几个方法。编写 主程序测试。 参考如下。
1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合...
08_C动态库升级成框架案例_方法1动态库中直接添加回调函数_传智扫地僧 09_C动态库升级成框架案例_方法2把回调函数缓存到动态库_编写 10_C动态库升级成框架案例_方法2把回调函数混存到动态库_测试 11_C++基础课程day...
│ 【Go Web基础】05文章的添加与删除 │ 【Go Web基础】06评论与分类显示 │ 【Go Web基础】07为文章添加标签 │ 【Go Web基础】08文章附件上传 │ 【Go Web基础】09国际化支持 │ 【Go Web基础...
17.1.1 从Google获取map-api密钥 17.1.2 MapView和MapActivity 17.1.3 使用覆盖图添加标记 17.2 位置包 17.2.1 使用Android进行地理编码 17.2.2 使用后台线程进行地理编码 17.2.3 ...
删除文本对象中的环绕。 这个插件在或会更有用。 您可以在全局范围和文件类型特定范围内自定义和添加环绕声定义。该插件的政策(或我不使用) 简便性:所有操作都应通过操作员映射完成。 可扩展性:应该使用g:...
17.1.1 从Google获取map-api密钥 17.1.2 MapView和MapActivity 17.1.3 使用覆盖图添加标记 17.2 位置包 17.2.1 使用Android进行地理编码 17.2.2 使用后台线程进行地理编码 17.2.3 ...
Kubernetes中的Gadgetron 该存储库包含用于在... 该脚本是在GADGETRON_REMOTE_WORKER_COMMAND环境变量中指定的,该环境变量引用了ConfigMap中添加的脚本。 这也是PreStop生命周期挂钩脚本,用于确保具有活动连接的Gadge