A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.List;

  4. public class ForeTest2 {

  5.         /**
  6.          * 对集合中的元素删除
  7.          */
  8.         public static void main(String[] args) {
  9.                 //demo1();
  10.                
  11.                 //demo2();
  12.                
  13.                 //demo();
  14.         }

  15.         private static void demo() {
  16.                 List<String> li = new ArrayList<>();
  17.                 li.add("a");
  18.                 li.add("a");
  19.                 li.add("d");
  20.                 li.add("f");
  21.                 li.add("a");
  22.                 li.add("h");
  23.                
  24.                 //因为增强for循环底层是有迭代器实现的,在修改时会报出并发修改异常
  25.                 for (String string : li) {
  26.                         if("a".equals(string)) {
  27.                                 li.remove("a");
  28.                         }
  29.                 }
  30.                 System.out.println(li);
  31.         }

  32.         private static void demo2() {
  33.                 List<String> li = new ArrayList<>();
  34.                 li.add("a");
  35.                 li.add("a");
  36.                 li.add("d");
  37.                 li.add("f");
  38.                 li.add("a");
  39.                 li.add("h");
  40.                 //在用普通for循环修改时,没删掉一个重复的元素,i的值就会改变,对于重复的元素在一块时,
  41.                 //后面的重复元素就跳过那个i值了,将会被保留下来,将每次将i-1,就是往上一次,即可避免
  42.                 for(int i = 0; i < li.size(); i ++) {
  43.                         if("a".equals(li.get(i))) {
  44.                                 li.remove("a");
  45.                                 i--;
  46.                         }
  47.                 }
  48.                 System.out.println(li);
  49.         }

  50.         private static void demo1() {
  51.                 List<String> li = new ArrayList<>();
  52.                 li.add("a");
  53.                 li.add("a");
  54.                 li.add("d");
  55.                 li.add("f");
  56.                 li.add("a");
  57.                 li.add("h");
  58.                
  59.                 Iterator<String> it = li.iterator();
  60.                 while(it.hasNext()) {
  61.                         String str = it.next();
  62.                         if("a".equals(str)) {
  63.                                 //在迭代过程中删掉元素,如果用集合的删除方法删除元素,会出现并发修改异常,需要用迭代器的方法
  64.                                 //li.remove("a");
  65.                                 it.remove();
  66.                         }
  67.                 }
  68.                 System.out.println(li);
  69.         }

  70. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马