public class Test {
public static void main(String[] args) {
Collection c =new ArrayList();
c.add(new Student("zhangsan",11));
c.add(new Student("lisi",11));
c.remove(new Student("lisi",11));
System.out.println(c);
}
}
输出结果是包名,而不是"zhangsan",11

解决方案 »

  1.   

    你可以在Collect里面写个method, 
    或者打印的时候遍历一下
      

  2.   

    结果输出的是包名,因为你的Student是对象,要输出为字符,请重写toString()方法,如下:
    public class Student
    {
    private String name;
    private int age;
    public Student(String name,int age){
    this.name=name;
    this.age=age;
    } public String toString(){
    return name+","+age;
    }

    public static void main(String[] args)
    {
    Collection c =new ArrayList();
    c.add(new Student("zhangsan",11));
    c.add(new Student("lisi",11));
    c.remove(new Student("lisi",11));
    System.out.println(c); }}
      

  3.   

    二楼说的对,楼主重写toString();就行了.
      

  4.   

    默认输出地址,  要输出内容 重写 toString()
      

  5.   

    System.out.println()默认调用ArrayList的toString方法,toString方法没重写之前输出的是该对象的内存地址空间
      

  6.   

    没重写student的toString方法,默认打印地址
      

  7.   

    在student类中右键->source->选中.....tostring点了就可以自动生成
      

  8.   

    直接在Student类中 再增加一个toStrng()方法  快捷键  alt+shift+s
      

  9.   

    你打印的是指向ArrayList的那块引用,而这个对象是个类,如果要取到"zhangsan",11这个值,就必须打印指向该块内存的引用
      

  10.   

    首先调用ArrayList类中的toString方法, 然后ArrayList中的toString方法调用Student中的toString方法。 Student中的toString方法没有重写就默认调用继承Object中的toString方法 默认就打印出该对象的内存地址
      

  11.   

    首先调用ArrayList类中的toString方法, 然后ArrayList中的toString方法调用Student中的toString方法。
      

  12.   

    二楼说的对,楼主重写toString();就行了.
      

  13.   

    肯定不行了,list当然不能直接输出了。
      

  14.   

    输出的是对象,要toString() .
      

  15.   

        public String toString() {
            Iterator<E> it = iterator();
            if (! it.hasNext())
                return "[]";        StringBuilder sb = new StringBuilder();
            sb.append('[');
            for (;;) {
                E e = it.next();
                sb.append(e == this ? "(this Collection)" : e);
                if (! it.hasNext())
                    return sb.append(']').toString();
                sb.append(',').append(' ');
            }
        }Object的
        public String toString() {
            return getClass().getName() + "@" + Integer.toHexString(hashCode());
        }
      

  16.   

    重写Student类toString方法就能输出了
    public String toString() {
    return "Student [name=" + name + ", age=" + age + "]";
    }
      

  17.   

    你写的那个上一个类student类没有重写tostring()方法哦
      

  18.   

    同求,Java就是一个很难的软件,不好弄懂
      

  19.   

    toString试下
      

  20.   

    默认输出地址,要想输出内容需要重写toString()方法
      

  21.   

    在你的Student类中重写一个toString方法,返回你想要显示的数据,而且,你这样直接输出list是得不到里面的每一个数据的,你需要遍历list,for(Student stu:list){},这样stu才是你里面的数据,再输出,顺便,你的remove方法有问题,c.remove(new Student("lisi",11));并不能删除你添加的第二个数据,记住,只要new了以后,实在声明一个新的对象,就算你里面的数据内容一样,但是他们根本上是不同的,相关的你可以去百度
      

  22.   

    直接重tostring()方法
      

  23.   

    2楼正解,在Student类中重写toString();方法,这个方法也可以用变成工具自动重构
      

  24.   

    Eclipse编译器 
    进入Student类
    按住shift+alt+s快捷键 
    选择Generate ToString() 选项  (倒数第四个) 
    亲测有效
      

  25.   

    在Student实体类中重写toString方法,但是你的输出还是会有lisi的信息,你的remove并不能将其删除掉,因为你是new出来的一个新的对象
      

  26.   

    你在集合里面装的是对象,而对象的传递是地址值的传递,你的集合里面只是这个对象的地址值
    如果你想直接这样输出集合里面对象的东西的话
    需要在对象的类中重写toString方法
      

  27.   

    你的Student类中没有重写toSTring方法,所以打印的是地址值!
      

  28.   

    没有重写toString方法,默认输出的是  类名(全部路径)@hash值,eclipse 中提供自动重写toString方法的功能,在自定义类中按住shift+alt+s 找找有个toString,点一下即可。
      

  29.   

    即使重写toString 方法 ,也不会输出你要的[zhangsan,11]结果的,你这三行写的有问题 
    c.add(new Student("zhangsan",11));
    c.add(new Student("lisi",11));
    c.remove(new Student("lisi",11));
    应该把 new Student() 放到外边
    Student a = new Student("zhangsan",11);
    Student b = new Student("lisi",11);
    c.add(a);
    c.add(b);
    c.remove(b);
      

  30.   

    顶2楼 ,重写toString方法就行了
      

  31.   

    默认的继承超类Object的toString方法,如果想要自己的效果,就按照二楼说的,重写toString方法。
      

  32.   

    System.out.println(c);这个语句调研c的toString()
    就是调用AbstractCollection的toStrin(),
    你可以去看看源码
      

  33.   

    重写toString,或者遍历输出
      

  34.   

    你要明白,Java的每个类里面的toString方法都可以重写,它们都不尽相同。所以你打印的时候,系统自动将变量c赋予toString()方法,这样,打印的就是一堆类的信息。你可以重写toString方法,或者试下简便的 c+"" 方法
      

  35.   

    往集合中存储自定义的类的对象要重写toString方法,虽然直接打印会默认调用toString方法,但是不重写的toString方法默认打印的是逻辑地址值。
      

  36.   

        在Student类中重写toString()方法。
      

  37.   

    重写Student.toString()方法
      

  38.   

    默认是打印tostring 方法,你需要覆盖这个方法
      

  39.   

    受教了。刚学java,进来看看,然后等下把这段代码写一篇。
      

  40.   

    对象是引用类型 你的collection中每一个存储的依然是引用类型。因此在你没有重写toString方法之前直接进行输出,那么它输出的肯定是一个地址引用。