按照我的理解这样写就是使用新的集合singleElement(al)为原有的集合变量al重新赋值,这个的变量不过就是接收了一下,如果为了看得清晰,也可以重新定义一个新的ArrayList的变量来接收他;
import java.util.ArrayList;
import java.util.Iterator;
class Demo1
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); //此处已经定义一个容器,并且在下面已经加入元素
al.add("java01");
al.add("java02");
al.add("java01");
al.add("java02");
al.add("java01");
// al.add("java03");
/*
在迭代时循环中next调用一次,就要hasNext判断一次。
Iterator it = al.iterator();
while(it.hasNext())
{
sop(it.next()+"...."+it.next());
}
*/
/**/
sop(al);
// al = singleElement(al);不要他;或者你自己在重新定义一个ArrayList来接收singleElement(al)
//此处经过过滤后的返回值又放到这个al里,这个al应该还是原来的al吧。他们之间不会重复吗?以前的那些数据会被删除了再来添加过滤后的元素吗?
sop(singleElement(al));
}
public static void sop(Object obj)
{
System.out.println(obj);
}
public static ArrayList singleElement(ArrayList al)
{
//定义一个临时容器。
ArrayList newAl = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();
if(!newAl.contains(obj))
newAl.add(obj);
}
return newAl;
}
}
|