吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2572|回复: 4
收起左侧

[Java 转载] list和iterator的remove区别

[复制链接]
NullPointer 发表于 2017-1-9 11:29
[Java] 纯文本查看 复制代码
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
	}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

247192825 发表于 2017-1-9 11:49
list remove 后需要复位一下索引; i--
hlrlqy 发表于 2017-1-9 12:56
for的话 你删除完第一个i 数组就剩下两个东西 索引就是 0 1 而删除的时候索引是0 所以第二次循环就是索引1 就是数字3了 而hasnext不是通过索引位置来的 所以无论数组怎么变化 都会判断数组所有成员

不懂继续问
 楼主| NullPointer 发表于 2017-1-9 13:01
hlrlqy 发表于 2017-1-9 12:56
for的话 你删除完第一个i 数组就剩下两个东西 索引就是 0 1 而删除的时候索引是0 所以第二次循环就是索引1  ...

就是这样。
xia随风而逝 发表于 2017-1-9 16:12

高手云集
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 04:16

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表