解决方案 »
- struts2 使用select的onchange进行ajax提交?!
- 读取Word内容
- appfuse相关咨询(等你来..)
- com.microsoft.sqlserver.jdbc.SQLServerException: 该语句没有返回结果集。
- hibernate并发访问真是忙的不行了,大家帮帮忙,运行的系统出毛病了!
- 高手请指教,怎么才能让服务器主动发消息给客户端
- web app libraries 是空的
- 谁有SQL Server 2000 Driver for JDBC 的完全版,大约6M多那个?
- j2ee配置出错,请大侠帮帮忙
- 谁能告诉我EJB的体系结构有哪些,这些体系结构的优缺点如何,万分感谢!
- 紧急求救!!!
- SPRING2.0+ow2-jotm-dist-2.2.1 经常找不获取不到数据源连接但是刷新一下就好了
删除动作作用时,会同时改变list内部的index的确需要遍历删除的情况下,要这么做: List<String> l = new ArrayList<String>();
l.add("11111");
l.add("22222"); for(Iterator<String> it = l.iterator();it.hasNext();){
it.next();
it.remove();
}
System.out.println(l);
如果你用Iterator接口,要用index来做的话,注意一点,每次删除以后.size()就被改变了,所以你要把size方法移出for循环之外
类似这样: List<String> l = new ArrayList<String>();
l.add("11111");
l.add("22222"); int size = l.size();
for(int i = size - 1; i >= 0; --i){
l.remove(i);
}
System.out.println(l);
l.add("11111");
l.add("22222");
while(l.iterator().hasNext()) {
l.remove(l.get(0));
}
System.out.println(l.size());
标准的设计溢出啊...
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
l.add("11111");
l.add("22222");
while(l.size()>0){
l.remove(l.size()-1)
}
System.out.println(l.size());
}
package com.zf.test;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Test5 {
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
l.add("11111");
l.add("22222"); //单独用下面三个中的某一个方法肯定是都不行的。 //(1) 这里foreach循环,其实就相当于是Iterator在迭代集合对象 ,
// Iterator在迭代对象的时候是不允许被迭代的对象修改或Remove的,除非用Iterator自己的remove()方法
for(String a : l){
l.remove(a);
}
//改成下面这样是可以的。
Iterator<String> it = l.iterator();
while(it.hasNext()){
it.next();
it.remove();
} //(2) 你可以试想一下 , 刚开始的时候l.size() = 2 , i = 0
// 当执行完第一次循环 就移除了一个对象 此时 , l.size() == 1 , i = 1
// 此时 i< l.size() 不成立 , 就不会继续循环了。
for(int i=0;i<l.size();i++){
l.remove(l.get(i));
} // 同上
for(int i=0;i<l.size();i++){
l.remove(i);
}
System.out.println(l.size()); }
}
l.remove(i);
}
当i=0时删除了一个,当i=1时size()=1, 循环退出了
for(int i=0;i<l.size();i++){
l.remove(l.get(i));
}
一个道理