list和iterator的remove区别
public static void main(String[] args) {List<String> lists = new ArrayList<String>();
lists.add("1");
lists.add("1");
lists.add("3");
for(int i = 0; i < lists.size(); i++) {
if("1".equals(lists.get(i))) {
lists.remove(i); //只删除第一个
}
}
System.out.println(JSONArray.fromObject(lists)); //1,3
Iterator<String> it = lists.iterator();
while(it.hasNext()) {
if("1".equals(it.next())) {
it.remove(); //将匹配的全部都删除
}
}
System.out.println(JSONArray.fromObject(lists)); //3
} list remove 后需要复位一下索引; i-- for的话 你删除完第一个i 数组就剩下两个东西 索引就是 0 1 而删除的时候索引是0 所以第二次循环就是索引1 就是数字3了 而hasnext不是通过索引位置来的 所以无论数组怎么变化 都会判断数组所有成员
不懂继续问 hlrlqy 发表于 2017-1-9 12:56
for的话 你删除完第一个i 数组就剩下两个东西 索引就是 0 1 而删除的时候索引是0 所以第二次循环就是索引1...
{:1_921:}就是这样。 NullPointer 发表于 2017-1-9 13:01
就是这样。
高手云集
页:
[1]