java List remove 时的小问题
来源:互联网 发布:javascript代码格式化 编辑:程序博客网 时间:2024/05/14 20:24
import java.util.*;
public class object {
public static void main(String[] args) {
String str1 = new String("abcde");
String str2 = new String("abcde");
String str3 = new String("abcde");
String str4 = new String("abcde");
String str5 = new String("abcde");
List list = new ArrayList();
list.add(str1);
list.add(str2);
list.add(str3);
list.add(str4);
list.add(str5);
System.out.println("list.size()=" + list.size());
for (int i = 0; i < list.size(); i++) {
if (((String) list.get(i)).startsWith("abcde")) {
list.remove(i);
}
}
System.out.println("after remove:list.size()=" + list.size());
}
}
运行结果不是:
list.size()=5
after remove:list.size()=0
居然是:
list.size()=5
after remove:list.size()=2
原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。
解决方法:
1.倒过来遍历list
for (int i = list.size()-1; i > =0; i--) {
if (((String) list.get(i)).startsWith("abcde")) {
list.remove(i);
}
}
2.每移除一个元素以后再把i移回来
for (int i = 0; i < list.size(); i++) {
if (((String) list.get(i)).startsWith("abcde")) {
list.remove(i);
i=i-1;
}
}
- java List remove 时的小问题
- java List remove 时的小问题
- java list remove的问题
- 使用List的Remove方法时想起的小问题
- 关于List的一个小问题——remove()函数
- 关于List的一个小问题——remove()函数
- java中使用list.remove需要注意的问题
- Java List Copy,Remove容易出现的问题
- Java:List的remove解析
- java中list的remove
- 今天遇到的对List,ArrayList的remove方法的一个小问题
- 使用List中remove方法时需要注意的问题
- List remove中要注意的问题
- List remove中要注意的问题
- List remove中要注意的问题
- list.remove需注意的问题
- List集合remove元素的问题
- List使用remove(index);遇到的问题;
- win7 80端口被system占用
- 蚊子
- Maven 常用命令集合
- 杭电 hdu 1867 A + B for you again
- [转]创业公司如果只是找一个会耍青龙偃月刀的人 你千万要慎重即使你会
- java List remove 时的小问题
- 华硕笔记本激活WIN7时出现Can not open file C:/ Recovery.dat解决方法
- 技术路线的选择重要但不具有决定性
- ajax,使用ScriptManager控件
- android poweroff 流程
- android 启动过程
- NIOS 与window7的兼容问题
- MYsql:Plugin 'FEDERATED' is disabled.或1067错误 启动错误与“服务 mysql 意外停止”解决方法
- 杭电 hdu 2087 剪花布条