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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
        ArrayListTest,去掉一个ArrayList中的重复元素
        思路1:
        用第一个元素与后边的所有元素比较,相同的删掉
        再用第二个元素与后边的比较,相同的删掉,一直比较到最后一个元素为止

        思路2:
        拿一个新的容器,将旧的容器里的元素一个一个复制到新的里边,
        复制前判断如果新的里边有该元素,则不再复制

        比较而言:思路2便于理解,更容易编码,出错较少。思路1修改了很久才能实现。

        注意:思路2执行完后,原ArrayList改变了;思路1执行完后,原ArrayList不变!
*/
import java.util.*;

class ArrayListTest
{
        public static void main(String[] args)
        {
                ArrayList al1=new ArrayList();

                 al1.add("01");
                al1.add("02");
                al1.add("02");
                al1.add("04");
                al1.add("05");
                al1.add("01");
                al1.add("05");
                al1.add("03");
                al1.add("06");
                al1.add("03");
                al1.add("03");
                al1.add("03");
                al1.add("01");
               
                System.out.println(al1);

            System.out.println("delRepeat"+DelRep.delRepeat(al1));
                System.out.println("del      "+DelRep.del(al1));
                 
        }
}

class DelRep
{
        public static ArrayList delRepeat(ArrayList al)//思路2
        {
                ArrayList a=new ArrayList();

                for (int i=0,j=0;i<al.size() ;i++ )
                {
                        if(!a.contains(al.get(i)))
                        {
                                a.add(j,al.get(i));
                                j++;
                        }
                }

                return a;
        }

        public static ArrayList del(ArrayList al)//思路1
        {
                for (int i=0;i<al.size() ;i++ )
                {
                        for (int j=i+1;j<al.size() ;j++ )
                        {
                                if(al.get(i)==al.get(j))
                                {
                                        al.remove(j);
                                 j=i+1;//容器元素数改变,为防止j已经不小于改变后的size(),而导致
                                             //后边的元素没有进行比较,给j重新赋初始值
                                   // System.out.println("i= "+i+"  j="+j+"  "+al);//修改找错的时候的实验语句
                                }
                        }
                }
                return al;
        }
}

0 个回复

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