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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /**
  2. * 需求
  3.         * ArrayList去除集合中包含数字字符的元素。(提示:.*\\d.*)
  4. * 注意事项
  5.         * 使用正则表达式
  6. */
  7. public static void main(String[] args) {
  8.         ArrayList<String> c = new ArrayList<>();                //创建集合对象
  9.         c.add("asad");
  10.         c.add("d213");
  11.         c.add("cad");
  12.         c.add("a^$5");
  13.         c.add("a2");
  14.         c.add("2");
  15.         String regex = ".*\\d.*";                                    //通配符规则:所有含有数字的字符串
  16.        
  17.         removeRegex1(c, regex);                                            //调用方法,移除c集合中符合regex的元素
  18.         //removeRegex2(c, regex);
  19.         System.out.println(c);
  20. }

  21. //方法1:for循环遍历,注意索引需自减1,否则会跳过一个元素
  22. private static void removeRegex1(ArrayList<String> c, String regex) {
  23.         for (int i = 0; i < c.size(); i++) {
  24.                 if (c.get(i).matches(regex)){
  25.                         c.remove(i--);
  26.                 }
  27.         }
  28.         System.out.println(c);
  29. }

  30. //方法2:迭代器遍历,注意使用迭代器自己的移除方法避免并发修改异常
  31. private static void removeRegex2(ArrayList<String> c, String regex) {
  32.         Iterator it = c.iterator();
  33.         while (it.hasNext()) {
  34.                 String s = (String) it.next();
  35.                 if (s.matches(regex)) {
  36.                         it.remove();
  37.                 }
  38.         }
  39. }
复制代码





0 个回复

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