黑马程序员技术交流社区
标题:
希望帮我解决一下this与p分别是哪一个对象,有点分不清
[打印本页]
作者:
陈中岩
时间:
2013-4-10 01:50
标题:
希望帮我解决一下this与p分别是哪一个对象,有点分不清
本帖最后由 陈中岩 于 2013-4-10 19:53 编辑
package test2;
import java.util.ArrayList;
import java.util.Iterator;
/*将自定义对象作为元素存储到ArrayList集合中,并取出重复元素。
*比如:存人对象。同姓名,同年龄,视为同一个人.为重复元素
*
*思路:
*1,对人描述,将数据封装进人对象。
*2,定义容器,将人存入
*3,取出
*/
class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
//判断姓名,年龄是否相同(equals在底层自动被调用的)
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
//!!!!!!!!!!!!------问题在这里,this调用与p调用的name分别是哪一个name,有点蒙了
Person p = (Person)obj;
System.out.println(this.name+""+p.name);
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 main(String[] args)
{
ArrayList al = new ArrayList();
al.add(new Person("list01",30));//因为这里al.add(Object obj)所以下面要做强制类型转换
al.add(new Person("list02",32));
al.add(new Person("list02",32));
al.add(new Person("list03",33));
al.add(new Person("list04",35));
al.add(new Person("list04",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())
{
//创建第三方对象,将迭代器出来的元素赋值给obj
Object obj = it.next();
//进行判断,如果newAl容器中不包含obj对象,就将obj对象存储斤newAl容器中
if(!newAl.contains(obj))
newAl.add(obj);
}
//最后将剩下的newAl进行返回
return newAl;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
作者:
续圆凯
时间:
2013-4-10 02:36
this是调用equals方法的name;
p是传入的参数经过强制类型转换的name。
作者:
陈中岩
时间:
2013-4-10 02:56
//左面是参数的,右面是当前对象
System.out.println(this.name+""+p.name);
return this.name.equals(p.name) && this.age == p.age;
复制代码
{:soso_e140:}问题解决了,当看到14-13的时候解决的。。呼呼~~~
作者:
黄玉昆
时间:
2013-4-10 08:14
如果问题未解决,请继续追问,如果没有问题了,请将帖子分类 改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2