黑马程序员技术交流社区
标题:
去除重复元素的疑惑,求指点
[打印本页]
作者:
胡元
时间:
2012-6-18 06:25
标题:
去除重复元素的疑惑,求指点
本帖最后由 胡元 于 2012-6-18 07:07 编辑
import java.util.*;
class SingleElement
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java01");
al.add("java02");
al.add("java02");
al.add("java03");
al.add("java03");
sop(al);
al = singleElement(al);
sop(al);
}
public static ArrayList singleElement(ArrayList al)
{
ArrayList ar = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();
sop(obj);
if(!al.contains(obj))//我调试过了,这里出了问题。但是明明和老师讲的一样呀!
ar.add(obj);
}
return ar;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
傻话不说了,直接上代码!
作者:
袁培育
时间:
2012-6-18 09:35
你代码有问题,那个if语句永远执行不到,不信你可以在里面加一个输出语句试试,因为你遍历的是a1的元素,那obj一定是a1里的元素,即al.contains(obj)一定为真,那if就不可能执行到,应该改为ar.contains(obj);你是不是看错老师代码了?把ar看成a1了?
作者:
王章亚
时间:
2012-6-18 09:50
import java.util.*;
class SingleElement
{
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java01");
al.add("java02");
al.add("java02");
al.add("java03");
al.add("java03");
sop(al);
al = singleElement(al);
sop(al);
}
public static ArrayList singleElement(ArrayList al)
{
ArrayList ar = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();
sop(obj);
if(!al.contains(obj))//你仔细看看这里的al对吗?应该是你写的ar吧!!换上ar你试试
ar.add(obj);
}
return ar;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
问题你自己也发现了,粗心大意造成的
作者:
常佳杰
时间:
2012-6-18 12:35
我想问一下如果改成你说的“ar”
那public static ArrayList singleElement(ArrayList al)传进来的“al”还有意义吗?
作者:
吴小东
时间:
2012-6-18 16:05
确实是判断条件出问题了,首先你的迭代器是对 al 也就是传入的参数进行迭代
那么你循环取出的值就是 al 中的元素
你有个一新的空集合 ar
那么判断条件应该是 空集合 ar 中是否 包含你每次读取出来的 al 中的元素 不包括就存,包括就不存
即是 !ar.contains(it.next())
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2