今天遇到的对List,ArrayList的remove方法的一个小问题
2011-08-12 20:50
387 查看
今天遇到的一个小问题: package com.jiangqq; import java.util.ArrayList; import java.util.List; public class Test01 { /** * @param args */ public static void main(String[] args) { List<String> lists = new ArrayList<String>(); lists.add("ad"); lists.add("abc"); lists.add("abcd"); lists.add("abcde"); for (int i = 0; i < lists.size(); i++) { String s = lists.get(i); if (s.equals("ad")) { lists.remove(s); continue; } System.out.println(s); } } } 本程序的运行结果为: 当人这个结果是错误的: 读下程序就知道 正确的结果应该为: abc abcd abcdd 分析为什么会会出现这样的结果;里面当刚开始循环i=0时 String s=ab; 测试判断可以经过remove(s),此时i=1,但是也把lists中的ab,元素删除了,这步骤造成的结果是:lists长度变短了,此时i=1,lists.size()=3,这样循环就会绕过abc这个元素,所以就出现以上那种错误结果了;把此程序改下就行: package com.jiangqq; import java.util.ArrayList; import java.util.List; public class Test01 { /** * @param args */ public static void main(String[] args) { List<String> lists = new ArrayList<String>(); lists.add("ad"); lists.add("abc"); lists.add("abcd"); lists.add("abcde"); for (int i = 0; i < lists.size(); i++) { String s = lists.get(i); if (!s.equals("ad")) { System.out.println(s); } } } } |
相关文章推荐
- java中ArrayList的remove方法删除一个数据时问题简述
- 今天遇到的一个问题及解决方法
- C#中ArrayList 与 string、string[]数组 的转换 (转学习:今天做项目时遇到一个arrylist转换问题,做记录)
- 今天遇到一个关于对象和对象方法内存分配的有趣的问题
- 记一次处理 list 的 remove 方法遇到的问题
- ArrayList在执行remove方法时遇到的问题
- 关于List,ArrayList中remove(object obj)方法不能删除对象问题
- Remoting方法重载遇到的一个问题
- 在部署Web工程时遇到的一个小问题,及解决方法
- 今天遇到一个问题,很纠结include(authenticate.php): failed to open stream: No such file or directory
- ExpandableStickyListHeadersListView遇到的一个问题
- 最近做了一个iOS小应用,记录下遇到的问题以及解决方法
- 今天又遇到了一个问题
- 今天改bug遇到一个ie8样式错乱问题
- 遇到一个Opera下的over-flow问题,暂时解决,但是方法不理想。
- 今天遇到一个定义一个枚举变量的问题。
- ArrayList和LinkedList add和remove方法的比较
- fnzi今天遇到一个事务问题,转载一篇文章,以示鼓励(五种spring事务实现方式)
- 今天进行最后编译了,遇到了不少问题,现已解决,将问题和解决方法都记录下来;
- 今天遇到的一个关于HttpSessionListener 的一个问题