Java-常见错误集锦
2016-05-26 14:39
417 查看
遍历时从列表里删除元素
1测试代码
2输出结果
3原因分析
1测试代码
2输出结果
3原因分析
1.遍历时,从列表里删除元素
1.1.测试代码:
/** * 遍历时,从列表里删除元素 */ private static void testListRemove() { List<String> list = new ArrayList(Arrays.asList("a", "b", "c", "d")); //错误姿势:使用for循环 try { for (String s : list) { if (s.equals("a")) list.remove(s); } } catch (Exception e) { e.printStackTrace(); } //正确姿势:使用迭代器 Iterator<String> iter = list.iterator(); while (iter.hasNext()) { String s = iter.next(); if (s.equals("a")) { iter.remove(); } } System.out.println(JSON.toJSONString(list)); }
1.2.输出结果:
1.3.原因分析:
当一个元素被删除时,列表的指针改变了。所以想要在循环内利用指针删除多个元素是无法正常进行的。相关文章推荐
- 借助 Java 9 Jigsaw,如何在 60 秒内创建 JavaFX HelloWorld 程序?
- Eclipse之properties文件编辑器中将Unicode码显示为翻译后的字符
- SpringMVC中使用Interceptor拦截器详解
- java反射获取类属性类型
- iOS消息推送(Java实现)
- eclipse修改注释中的@author和格式化
- java消息机制
- 关于Java字符串编码与解码
- 基于Maven的S2SH(Struts2+Spring+Hibernate)框架搭建
- Practical Java 读书笔记
- java写入excel文件poi
- 数据库查询结果、Ibatis的ResultMap与JavaBean的对应关系
- 吹捧一下Java策略模式,策略在手,万事无忧
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
- Java面向对象之接口
- 深入理解Java:SimpleDateFormat安全的时间格式化
- 接口与抽象类区别
- struts2+spring+hibernate整合步骤《开源》
- spring中@param和mybatis中@param使用区别
- Java UDP Server的轻量级实现