黑马程序员技术交流社区
标题:
关于ArrayList练习的问题
[打印本页]
作者:
我为你着迷
时间:
2014-11-16 19:46
标题:
关于ArrayList练习的问题
import java.util.*;
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p=(Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
class ArrayListTest2
{
public static void sop(Object obj)
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al=new ArrayList();
al.add(new Person("lisi01",30));//al.add(Object obj); Object obj=new Person("lisi01",30);Person会被提升为Object类型。
al.add(new Person("lisi02",32));
al.add(new Person("lisi02",32));
al.add(new Person("lisi03",33));
al.add(new Person("lisi04",35));
al.add(new Person("lisi04",35));
al=singleElement(al);
Iterator it=al.iterator();
while(it.hasNext())
{
/*
Object obj=it.next();
Person p=(Person)obj;
*/
Person p=(Person)it.next();
sop(p.getName()+":::"+p.getAge());
}
}
public static ArrayList singleElement(ArrayList al)
{
//定义一个临时容器
ArrayList newAl=new ArrayList();
Iterator it= al.iterator();//遍历老集合
while(it.hasNext())
{
Object obj=it.next();//获取一个元素用obj记下来
if(!newAl.contains(obj))
newAl.add(obj);
}
return newAl;
}
}
复制代码
return this.name.equals(p.name)&&this.age==p.age; 大家好 这句话哪位大神帮小弟解答下啊 没整懂 this和p分别指的是什么啊
作者:
郑飞
时间:
2014-11-16 20:04
equals 是把当前对象和传入方法的obj对象做比较 而p是从obj强转过来的
所以拿当前对象的引用this和p来作比较
作者:
wf111sxwf
时间:
2014-11-16 20:53
自古2楼出真理
作者:
我是紫色紫色
时间:
2014-11-17 13:09
this代表当前对象的引用,谁调用这个方法this就代表的是谁,p是你传递进来的那个参数,也就是另外一个对象,比如说有两个人person1和person2比较,this就代表person1,p就代表person2,懂了没?
作者:
a8851625
时间:
2014-11-17 14:16
this表示当前谁调用它,this就是谁。然后这里面的p是表示调用者的this.xx和你准备拿来equals比较的对象的属性如p.xx。p其实算是指即将比较的Person对象。
举个例子,你要比较某个东西是不是人,你是不是得现有个参考?那么this代表的就是这个参考,p代表的就是你要拿来比较的哪个东西~这么讲不晓得清楚不
作者:
327753899
时间:
2014-11-17 14:44
当前对象和存入对象比较
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2