黑马程序员技术交流社区
标题:
今天学到集合,出了点问题。。向各位大神求解
[打印本页]
作者:
张然龙
时间:
2014-5-3 21:40
标题:
今天学到集合,出了点问题。。向各位大神求解
本帖最后由 张然龙 于 2014-5-5 12:55 编辑
我觉得我写的都对的啊!,,卡了我两个小时了。 不过我知道肯定有问题 ,当局者迷 ,希望大家指出, 谢谢!!感激不尽!!
我要实现的功能是将不同的参数的对象存入al2中,将相同的去掉!,也就是说最后al2中剩下的应该只有一个!!
代码如下↓
class Person
{
String name;
Person(String name)
{
this.name=name;
}
public boolean equals(Object a)//覆盖equals方法,形成独有的equals判断方法
{
if(!(a instanceof Person) )
{
return false;
}
Person p=(Person)a;
System.out.println(this.name+"....."+p.name);
return this.name.equals(p.name);
}
}
class Demo3
{
public static void main (String args[])
{
ArrayList al=new ArrayList();
al.add(new Person("x"));
al.add(new Person("x"));
al.add(new Person("x"));
al.add(new Person("x"));
ArrayList al2=new ArrayList();
for(Iterator it=al.iterator();it.hasNext();)//遍历al集合
{
Person p=(Person)it.next();
if(!(al.contains(p)))//判断是否相同参数
{
al2.add(p);
}
}
System.out.println(al2);//打印al2中的元素
}
}
复制代码
作者:
skill20
时间:
2014-5-3 22:06
本帖最后由 skill20 于 2014-5-3 22:07 编辑
Person p=(Person)it.next();
if(!(al.contains(p)))//判断是否相同参数//这句话一直都是假吧。。。a1.contains(p)一直为真!
{
al2.add(p);
}
作者:
李东梁
时间:
2014-5-3 23:46
for(Iterator it=al.iterator();it.hasNext();)//遍历al集合
{
Person p=(Person)it.next();
if(!(a2.contains(p)))//判断是否相同参数
{
al2.add(p);
}
}
复制代码
你的判断是否有相同的参数结果全部为假了
作者:
张然龙
时间:
2014-5-4 08:07
本帖最后由 张然龙 于 2014-5-4 08:10 编辑
我晕哦 原来是这个问题 ,我脑袋短路了一下。。。
这个应该对了吧 ↓
class Demo3
{
public static void main (String args[])
{
ArrayList al=new ArrayList();
al.add(new Person("x"));
al.add(new Person("x"));
al.add(new Person("x"));
al.add(new Person("x"));
ArrayList al2=new ArrayList();
for(Iterator it=al.iterator();it.hasNext();)
{
Person p=(Person)it.next();
if(!(al2.contains(p)))
{
al2.add(p);
}
}
System.out.println(al2);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2