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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

0 个回复

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