A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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]
求好心人解答!!

5 个回复

倒序浏览
你在向集合中存入的是对象,打印的就是对象呗。而不是对象里面的属性,
回复 使用道具 举报
怎么看不到编辑在哪里啊,想设置为提问结束来着。
回复 使用道具 举报
忘加
Iterator it = list.iterator();

                while(it.hasNext())
                {
                        Person p = (Person)it.next();
                        sop(p.getName()+"....."+p.getAge());
                }

晕。。。。
回复 使用道具 举报
本帖最后由 程洋 于 2013-12-19 15:37 编辑

你这运行的结果是集合中每个元素的地址值,获取集合中的元素可以通过迭代器
  1. import java.util.*;
  2. class Person
  3. {
  4. private String name;
  5. private int age;
  6. Person(String name, int age)
  7. {
  8.   this.name = name;
  9.   this.age = age;
  10. }
  11. public String getName()
  12. {
  13.   return name;
  14. }
  15. public int getAge()
  16. {
  17.   return age;
  18. }
  19. public boolean equals(Object obj)
  20. {
  21.   if(!(obj instanceof Person))
  22.   return false;
  23.   Person p = (Person)obj;
  24.   return this.name.equals(p.getName()) && this.age == p.age;
  25. }
  26. }
  27. class Test
  28. {
  29. public static void main(String[] args)
  30. {
  31.   ArrayList list = new ArrayList();
  32.   list.add(new Person("java01", 1));
  33.   list.add(new Person("java02", 2));
  34.   list.add(new Person("java02", 3));
  35.   list.add(new Person("java03", 3));
  36.   list.add(new Person("java04", 4));
  37.   list.add(new Person("java05", 5));
  38.   Iterator it = list.iterator();
  39.   while(it.hasNext())
  40.   {
  41.         Person p= (Person)it.next();
  42.         sop(p.getName()+"...."+p.getAge());        
  43.   }
  44.   sop(signalElement(list));
  45. }

  46. public static ArrayList signalElement(ArrayList list)
  47. {
  48.   ArrayList ar = new ArrayList();
  49.   Iterator it = list.iterator();
  50.   while(it.hasNext())
  51.   {
  52.    Object obj = it.next();
  53.    if(!ar.contains(obj))
  54.     ar.add(obj);
  55.   }
  56.   return ar;
  57. }
  58. public static void sop(Object obj)
  59. {
  60.   System.out.println(obj);
  61. }
  62. }
复制代码
回复 使用道具 举报
在Person类中重写toString()方法就行,

public String toString (){

  System.out.println(name+""+age);

}

想是输出Person对象,就调用这个方法。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马