/*
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;
}
} |
|