黑马程序员技术交流社区
标题:
ArrayListTest2,编译结果为什么会是地址值?
[打印本页]
作者:
just_nnnnx
时间:
2013-12-19 15:07
标题:
ArrayListTest2,编译结果为什么会是地址值?
import java.util.*;
class Person
{
private String name;
private int age;
Person(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
return this.name.equals(p.getName()) && this.age == p.age;
}
}
class Test
{
public static void main(String[] args)
{
ArrayList list = new ArrayList();
list.add(new Person("java01", 1));
list.add(new Person("java02", 2));
list.add(new Person("java02", 3));
list.add(new Person("java03", 3));
list.add(new Person("java04", 4));
list.add(new Person("java05", 5));
sop(list);
sop(signalElement(list));
}
public static ArrayList signalElement(ArrayList list)
{
ArrayList ar = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext())
{
Object obj = it.next();
if(!ar.contains(obj))
ar.add(obj);
}
return ar;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
编译结果为什么会是
[Person@1b8d6f7,
Person@290fbc
,
Person@1c80b01
,
Person@4aa0ce
,
Person@1833eca
, P
erson@18f5824
]
[Person@1b8d6f7,
Person@290fbc
,
Person@1c80b01
,
Person@4aa0ce
,
Person@1833eca
, P
erson@18f5824
]
求好心人解答!!
作者:
一年之后
时间:
2013-12-19 15:20
你在向集合中存入的是对象,打印的就是对象呗。而不是对象里面的属性,
作者:
just_nnnnx
时间:
2013-12-19 15:26
怎么看不到编辑在哪里啊,想设置为提问结束来着。
作者:
just_nnnnx
时间:
2013-12-19 15:27
忘加
Iterator it = list.iterator();
while(it.hasNext())
{
Person p = (Person)it.next();
sop(p.getName()+"....."+p.getAge());
}
晕。。。。
作者:
程洋
时间:
2013-12-19 15:33
本帖最后由 程洋 于 2013-12-19 15:37 编辑
你这运行的结果是集合中每个元素的地址值,获取集合中的元素可以通过迭代器
import java.util.*;
class Person
{
private String name;
private int age;
Person(String name, int age)
{
this.name = name;
this.age = age;
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
public boolean equals(Object obj)
{
if(!(obj instanceof Person))
return false;
Person p = (Person)obj;
return this.name.equals(p.getName()) && this.age == p.age;
}
}
class Test
{
public static void main(String[] args)
{
ArrayList list = new ArrayList();
list.add(new Person("java01", 1));
list.add(new Person("java02", 2));
list.add(new Person("java02", 3));
list.add(new Person("java03", 3));
list.add(new Person("java04", 4));
list.add(new Person("java05", 5));
Iterator it = list.iterator();
while(it.hasNext())
{
Person p= (Person)it.next();
sop(p.getName()+"...."+p.getAge());
}
sop(signalElement(list));
}
public static ArrayList signalElement(ArrayList list)
{
ArrayList ar = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext())
{
Object obj = it.next();
if(!ar.contains(obj))
ar.add(obj);
}
return ar;
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
复制代码
作者:
刘松703
时间:
2013-12-19 15:35
在Person类中重写toString()方法就行,
public String toString (){
System.out.println(name+""+age);
}
想是输出Person对象,就调用这个方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2