三九宝宝网宝宝教育计划总结

HashMap和List遍历方法总结及如何遍历删除

02月10日 编辑 39baobao.com

[桌面上单击鼠标右键出现搜狗壁纸和开启图标管理两项如何删除]1:首先按下WIN键+R,在弹出的对话框中输入“regedit”,然后按“确定”。 2:在打开的“注册表编辑器”窗口中,打开 HKEY_CURRENT_USER\Software\ Microsoft\Internet Explorer\Menu...+阅读

(一)List的遍历方法及如何实现遍历删除 我们造一个list出来,接下来用不同方法遍历删除,如下代码:Listlist= new ArrayList();famous.add("zs");famous.add("ls");famous.add("ww");famous.add("dz");

1、for循环遍历list:for(int i=0;i it = list.iterator();it.hasNext();){String s = it.next();if(s.equals("madehua")){list.remove(s);}} 下面就解释为什么会报ConcurrentModificationException异常。

分析Iterator的源代码,重点分析整个调用该过程中的 函数(hasNext和remove):private class Itr implements Iterator{ int cursor; // index of next element to return int lastRet = -1; // index of last element returned; -1 if no such int expectedModCount = modCount; public boolean hasNext() { return cursor != size; // size为集合中元素的个数 } public E next() { checkForComodification(); int i = cursor; if (i >= size) throw new NoSuchElementException(); Object[] elementData = ArrayList.this.elementData; if (i >= elementData.length) throw new ConcurrentModificationException(); cursor = i + 1; return (E) elementData[lastRet = i]; } /* 此方法并没被调用,只是调用List.remove方法 public void remove() { checkForComodification(); try { ArrayList.this.remove(lastRet); // size字段减1 cursor = lastRet; lastRet = -1; expectedModCount = modCount; } catch (IndexOutOfBoundsException ex) { throw new ConcurrentModificationException(); } } */ final void checkForComodification() { // 检查修改和当前版本号是否一致,不一致则抛出异常 if (modCount != expectedModCount) throw new ConcurrentModificationException(); } } // List.remove Override public boolean remove(Object object) { Object[] a = array; int s = size; if (object != null) { for (int i = 0; i

这样当checkForComodification的时候,modCount值就和expectedModCount不同 return true; } } } else { for (int i = 0; i

这里的modCount是指这个list对象从呢我出来到现在被修改的次数,当调用list 的add或者remove方法的时候,这个modCount都会自动增减;iterator创建的时候modCount被复制给了 expectedModcount,但是调用list的add和remove方法的时候不会同时自动增减expectedModcount,这样就导致 两个count不相等,从而抛出异常。大家如果理解了上面的执行流程,以后碰到类似这种问题,比如如果删除的是倒数 第二个元素却不会碰到异常。

就会知道为什么了。

3、iterator遍历删除:Iteratorit = list.iterator();while(it.hasNext()){String x = it.next();if(x.equals("del")){it.remove();}} 这种方式是可以正常遍历和删除的。但是你可能看到上面代码感觉和增强for循环内部实现的代码差不多,其实差别就在于上面使用 一个使用list.remove(),一个使用it.remove()。

(二)HashMap的遍历删除及如何实现遍历删除 一样我们先造一个hashmap出来,如下:private static HashMapmap = new HashMap();; public static void main(String[] args) { for(int i = 0; i

1、第一种遍历删除:for(Map.Entryentry : map.entrySet()){Integer key = entry.getKey();if(key % 2 == 0){System.out.println("To delete key " + key);map.remove(key);System.out.println("The key " + + key + " was deleted");} 这种遍历删除依旧会报ConcurrentModificationException异常,

2、第二种遍历删除:SetkeySet = map.keySet(); for(Integer key : keySet){ if(key % 2 == 0){ System.out.println("To delete key " + key); keySet.remove(key); System.out.println("The key " + + key + " was deleted"); }...

以下为关联文档:

在桌面点右键后的工具栏打开搜狗壁纸这一栏咋删除步骤/方法 1.依次打开“开始菜单——所有程序——附件” 2.右击“命令提示符”,单击“以管理员身份运行” 3.在命令提示符窗口下键入 reg delete "HKEY_LOCAL_MACHINE\SOFTWAR...

你好iphone4s怎么把里面的音乐删除有两种办法 1是通过itunes的音乐资料库里删减 然后再和手机同步 另外一种就是如果你的手机系统是5.0以上 可以直接在手机上删歌,操作步骤如下:1 打开手机里的音乐 2 在你想要...

苹果4s怎么删除不要的游戏按不出那个x了就不知道怎么删了[em]e328222[/em][em]e328222[/em][em]e328222[/em]用iPhone的赶紧收藏!看完后才发现,很多用iPhone的人,实在是愧对乔布斯! 很多人花了四五千买部苹果,结果只用到四五百块钱的普...

怎样手动删除IE管理加载项的插件1、对于IE浏览器而言,一般都插件或扩展都有数字签名认证的。怎么管理IE的扩展插件,打开开始---运行输入 inetcpl.cpl 进入internet选项 2、打开的internet选项对话框,找到【程...

转贴技术贴教你怎么把game center中的游戏记录删除适合强迫症分享给大家 主要适用于那些删除游戏时不提示是否移除game center记录的。 方法:1.首先把你想删除GAME CENTER的游戏的ipa文件改成RAR格式的~ (例如想要删除记录的游戏名字叫做...

iPhone苹果手机怎么删除音乐歌曲苹果手机比较特殊,不能直接删除或者存取音乐,要利用苹果自带的程序或者第三方工具才行。 itunes删除歌曲的方法 打开itunes,打开资料库里的音乐库。 然后选中要删除的音乐,然后...

如何删除apple music音乐打开itunes,打开资料库里的音乐库。 2 然后选中要删除乐,然后右键菜单选中“删除” 3 iphone连接电脑,进入设备 4 进入设备后,选中音乐选项。点击“同步音乐”。删除的音乐即可...

怎样将小米3手机中的游戏中心软件等删除1. 一般来说软件分为系统预装与用户自己安装的软件,小米手机预装的软件都是安卓手机系统必须的,以及MIUI系统自家的特色服务,它们是无法直接卸载。而用户自己安装的软件可衣卸...

地牢猎手5怎么删档教程删除及重建角色方法攻略地牢猎手5怎么删档教程 删除及重建角色方法攻略。地牢猎手5游戏中,不想玩某个角色时我们也可以选择删除,iOS版和安卓版删除游戏存档的方法是怎样的呢?重建角色又需要哪些操作?需...

推荐阅读
图文推荐