- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.List;
- public class ForeTest2 {
- /**
- * 对集合中的元素删除
- */
- public static void main(String[] args) {
- //demo1();
-
- //demo2();
-
- //demo();
- }
- private static void demo() {
- List<String> li = new ArrayList<>();
- li.add("a");
- li.add("a");
- li.add("d");
- li.add("f");
- li.add("a");
- li.add("h");
-
- //因为增强for循环底层是有迭代器实现的,在修改时会报出并发修改异常
- for (String string : li) {
- if("a".equals(string)) {
- li.remove("a");
- }
- }
- System.out.println(li);
- }
- private static void demo2() {
- List<String> li = new ArrayList<>();
- li.add("a");
- li.add("a");
- li.add("d");
- li.add("f");
- li.add("a");
- li.add("h");
- //在用普通for循环修改时,没删掉一个重复的元素,i的值就会改变,对于重复的元素在一块时,
- //后面的重复元素就跳过那个i值了,将会被保留下来,将每次将i-1,就是往上一次,即可避免
- for(int i = 0; i < li.size(); i ++) {
- if("a".equals(li.get(i))) {
- li.remove("a");
- i--;
- }
- }
- System.out.println(li);
- }
- private static void demo1() {
- List<String> li = new ArrayList<>();
- li.add("a");
- li.add("a");
- li.add("d");
- li.add("f");
- li.add("a");
- li.add("h");
-
- Iterator<String> it = li.iterator();
- while(it.hasNext()) {
- String str = it.next();
- if("a".equals(str)) {
- //在迭代过程中删掉元素,如果用集合的删除方法删除元素,会出现并发修改异常,需要用迭代器的方法
- //li.remove("a");
- it.remove();
- }
- }
- System.out.println(li);
- }
- }
复制代码 |
|