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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /**
  2. * 需求
  3.         * ArrayList去除集合中所有的指定元素。
  4. * 注意事项
  5.         * 每种方法的注意事项见行注释。
  6. */
  7. public static void main(String[] args) {
  8.         ArrayList<String> c = new ArrayList<>();                //创建集合对象
  9.         c.add("a");
  10.         c.add("d");
  11.         c.add("c");
  12.         c.add("a");
  13.         c.add("a");
  14.         c.add("b");
  15.         c.add("a");
  16.         c.add("c");
  17.         c.add("b");
  18.         removeRepeat_1 (c , "a");                                                //调用三种方法删除传入集合中的指定元素
  19.         //removeRepeat_2 (c , "a");
  20.         //removeRepeat_3 (c , "a");
  21.         //removeRepeat_4 (c , "a");
  22.         System.out.println(c);
  23. }
  24. //contains判断
  25. private static void removeRepeat_1 (ArrayList<String> c,String s){
  26.         while (c.contains(s)){
  27.                 c.remove(s);
  28.         }
  29. }
  30. //for遍历,注意移除元素后索引需要自减,否则会跳过一个元素
  31. private static void removeRepeat_2(ArrayList<String> c, String s) {
  32.         for (int i = 0; i < c.size(); i++) {
  33.                 if (c.get(i).equals(s)) {
  34.                         c.remove(i--);                                                        //索引--,否则会跳过一个元素
  35.                 }
  36.         }
  37. }
  38. //for倒序遍历,无需考虑索引的问题,不会有遗漏
  39. private static void removeRepeat_3(ArrayList<String> c, String s) {
  40.         for (int i = c.size() - 1; i >= 0; i--) {
  41.                 if (c.get(i).equals(s)) {
  42.                         c.remove(i);
  43.                 }
  44.         }
  45. }
  46. //迭代器遍历,需要用迭代器自己的删除操作,否则会报并发修改异常
  47. private static void removeRepeat_4(ArrayList<String> c, String s) {
  48.         Iterator it = c.iterator();
  49.         while (it.hasNext()) {
  50.                 String ss = (String) it.next();
  51.                 if (ss.equals(s)) {
  52.                         it.remove();                            //调用迭代器自身的删除方法
  53.                 }
  54.         }
  55. }
复制代码


0 个回复

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