您的位置:首页 > 其它

遍历删除List中的元素,会报错? 用iterator.remove() 完美解决

2017-07-31 20:23 253 查看

 

经常会碰到遍历集合,然后删除里面的对象报错, 纠结半天, 百度了一下,有大神说不能用for-each,  for , 只能用迭代器,真的吗?  我就删成功了呢,看代码,请大神们指正! 

public static void main(String[] args) {
//添加
List<String> names = new ArrayList<String>();
names.add("张三");
names.add("李四");
names.add("王五");

// 遍历显示
for (int i = 0; i < names.size(); i++) {
System.out.println(names.get(i));
}

//查找
if (names.indexOf("李四") >= 0 ){
System.out.println("李四的位置是:"+ names.indexOf("李四"));
}

//-------------失败--------
// foreach删除:报错
//        for (String name: names){
//            names.remove(name);
//        }

// 从小到大删除 0-》1-》2:失败!
//        names.remove(0);
//        names.remove(1);
//        names.remove(2);
//-------------失败--------

// 从大到小删除 2-》1-》0:成功!
names.remove(2);
names.remove(1);
names.remove(0);

// 重新添加新内容
names.add("aaaaaaa");
names.add("bbbbbbb");
names.add("bbbbbbb");

// 遍历并删除:从大到小循环删除
for (int i = names.size(); i > 0; i--) {
names.remove(i-1);
}
names.add("99999");
names.add("88888");
names.add("77777");

//使用迭代器删除
Iterator<String> iterator = names.iterator();
while(iterator.hasNext()){
iterator.next();
iterator.remove();
}

if (names.isEmpty()) {
System.out.println("集合为空");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: