zoukankan      html  css  js  c++  java
  • 循环中安全删除集合元素

    在循环中删除集合元素可能出现数组越界的问题,比如:

    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    list.add(3);
    for (Integer item : list) {
    	System.out.println(item);
    	if (item == 1) {
    		list.remove(item);
    	}
    }
    

    正确的做法是使用迭代器:

    List<Integer> list = new ArrayList<>();
    list.add(1);
    list.add(2);
    list.add(3);
    Iterator<Integer> iterator = list.iterator();
    while (iterator.hasNext()) {
    	Integer i = iterator.next();
    	System.out.println(i);
    	if (i == 1)
    		iterator.remove();
    }
    
    for (Integer i : list) {
    	System.out.println(i);
    }
    

    如果是 ArrayList,也可以倒序遍历时删除。

  • 相关阅读:
    模拟测试69
    模拟测试68
    模拟测试66
    NOIP模拟测试15
    NOIP模拟测试14
    Gekoo's checker
    NOIP模拟测试13
    替罪羊树模板
    KDTree笔记
    NOIP模拟测试12
  • 原文地址:https://www.cnblogs.com/xmsx/p/9747050.html
Copyright © 2011-2022 走看看