黑马程序员技术交流社区

标题: 循环判断集合中是否包含"def"字符串,包含就删除(正序遍历.... [打印本页]

作者: 佟复生    时间: 2017-8-5 22:30
标题: 循环判断集合中是否包含"def"字符串,包含就删除(正序遍历....
package com.itheima01;

import java.util.ArrayList;

public class MyHomeWorkDay09_2 {
        //输出集合
        public static void sysArrayList(ArrayList<String> arr) {
                for(int i = 0;i < arr.size();i++) {
                        String s = new String();
                        s = arr.get(i);
                        System.out.print(s + "  ");
                }
        }
        //删除集合中的所有字符串"def"(思路:循环判断集合中是否包含"def"字符串,包含就删除)
        public static void removeArrayList(ArrayList<String> arr,String str) {               //正序遍历
              /*  for(int i = 0;i < arr.size();i++) {
                        String s = new String();
                        s = arr.get(i);
                        if(s.equals(str)) {
                                arr.remove(i);
                        }
                }*/

                //倒序遍历
                for(int i = arr.size()-1;i >= 0;i--) {
                        String s = new String();
                        s = arr.get(i);
                        if(s.equals(str)) {
                                arr.remove(i);
                        }
                }
        }
        
        public static void main(String[] args) {
                ArrayList<String> arr = new ArrayList<String>();
                arr.add("abc");
                arr.add("def");
                arr.add("efg");
                arr.add("def");
                arr.add("qwe");
                arr.add("def");
                arr.add("def");
                arr.add("def");
                arr.add("swd");
                arr.add("qwe");
                arr.add("wwe");
                arr.add("def");
                arr.add("def");
               
                sysArrayList(arr);
                System.out.println();

                removeArrayList(arr,"def");
                sysArrayList(arr);
               
        }
}
正序遍历结果:
abc  def  efg  def  qwe  def  def  def  swd  qwe  wwe  def  def  
abc  efg  qwe  def  swd  qwe  wwe  def  

发现没有完全删除集合中的字符串def,原因是每次删除一个字符串后边的字符串会自动向前补上已删除的,所以导致有没删除的。
倒序遍历后结果正确:
abc  def  efg  def  qwe  def  def  def  swd  qwe  wwe  def  def  
abc  efg  qwe  swd  qwe  wwe






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2