黑马程序员技术交流社区
标题:
arraylist剔除重复元素问题
[打印本页]
作者:
M单色调
时间:
2014-7-23 18:01
标题:
arraylist剔除重复元素问题
今天练习ArrayList,遇到的问题。
大家看看这两种表示有什么不同:
public static ArrayList isEqual(ArrayList list){
//定义一个新的,用于存放不重复元素
ArrayList newlist=new ArrayList();
Iterator it=list.iterator();
while(it.hasNext()){
Object obj=it.next();
if(!newlist.contains(obj))
newlist.add(obj);
}
return newlist;
}
问题来了,如果把Object obj=it.next();这句去掉,下面的改成:
if(!newlist.contains(it.next()))
newlist.add(it.next());
输出的结果会不一样,求解释?
作者:
icris
时间:
2014-7-23 18:23
if(!newlist.contains(it.next()))
newlist.add(it.next());
复制代码
这里第一句取了一次数据进行比较,比较之后不重复则执行第二句,而第二句不是把这个数据存进新列表,而是取下一个数据存进新列表。
比如{1, 2},第一句判断 1 是否在新列表中,不在则把 2 存进新列表,这显然是不对的
作者:
star5603
时间:
2014-7-23 19:30
第二种显然不对啊,你会发现你判断的元素和加的元素不是一个元素。
作者:
tiandzwx
时间:
2014-7-23 19:34
it.next()调用了两遍,调用一次已经跑到下一个值了,再调用一遍就跑到下下个值了
作者:
M单色调
时间:
2014-7-24 01:10
嗯。谢谢了!
作者:
草鱼狂飙
时间:
2014-7-24 06:18
楼上正解!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2