- /**
- * 需求
- * ArrayList去除集合中包含数字字符的元素。(提示:.*\\d.*)
- * 注意事项
- * 使用正则表达式
- */
- public static void main(String[] args) {
- ArrayList<String> c = new ArrayList<>(); //创建集合对象
- c.add("asad");
- c.add("d213");
- c.add("cad");
- c.add("a^$5");
- c.add("a2");
- c.add("2");
- String regex = ".*\\d.*"; //通配符规则:所有含有数字的字符串
-
- removeRegex1(c, regex); //调用方法,移除c集合中符合regex的元素
- //removeRegex2(c, regex);
- System.out.println(c);
- }
-
- //方法1:for循环遍历,注意索引需自减1,否则会跳过一个元素
- private static void removeRegex1(ArrayList<String> c, String regex) {
- for (int i = 0; i < c.size(); i++) {
- if (c.get(i).matches(regex)){
- c.remove(i--);
- }
- }
- System.out.println(c);
- }
-
- //方法2:迭代器遍历,注意使用迭代器自己的移除方法避免并发修改异常
- private static void removeRegex2(ArrayList<String> c, String regex) {
- Iterator it = c.iterator();
- while (it.hasNext()) {
- String s = (String) it.next();
- if (s.matches(regex)) {
- it.remove();
- }
- }
- }
复制代码
|
|