输出的为什么是地址而不是具体的数呢还有remove()方法怎么就没起作用啊
package 第十三章.容器;
import java.util.*;public class User{
     String name;    public User(String name) {
        this.name = name;
    }
}package 第十三章.容器;import java.util.HashSet;
import java.util.Iterator;public class UserManager {      public static void main(String[] args) {
         HashSet hs=new HashSet<User>();
          hs.add(new User("Jim"));
          hs.add(new User("Tom"));
          hs.remove("Jim");//
          hs.contains(new User("Tom"));
          Iterator it=hs.iterator();
         while(it.hasNext())
         {
             System.out.println(it.next()+" ");         }
    }}

解决方案 »

  1.   

    Iterator没有用泛型。
    所以返回的是Object。
      

  2.   

     hs.remove("Jim");//
    你在HashMap中remove方面是移除指定建的映射关系在如果有得前提下。
    你添加的是一个User对象的话用Vector吧或者是list吧HashMap是键值对的关系、
      

  3.   

    你用的是HashSet , User类必须重写hashcode方法
      

  4.   

    package 第十三章.容器;
    import java.util.*;public class User{
      String name;  public User(String name) {
      this.name = name;
      }  //重写hashcode
      public int hashcode(){
        return name.hashcode();
      }
    }package 第十三章.容器;import java.util.HashSet;
    import java.util.Iterator;public class UserManager {  public static void main(String[] args) {
      HashSet hs=new HashSet<User>();
      hs.add(new User("Jim"));
      hs.add(new User("Tom"));
      //修改
      hs.remove(new User("Jim"));
      hs.remove("Jim");//
      hs.contains(new User("Tom"));
      Iterator it=hs.iterator();
      while(it.hasNext())
      {
      System.out.println(it.next()+" ");  }
      }}
      

  5.   


    package com.csdn.www.Set;import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;
    public class Test {

    public static void main(String[] args){
    Set<User> set = new HashSet<User>();
    set.add(new User("Jim"));
    set.add(new User("Tom"));
    if(set.contains( new User("Jim"))){
    set.remove(new User("Jim"));
    System.out.println("remove Jim ...");
    }

    Iterator<User> iterator = set.iterator();
    while(iterator.hasNext()){
    System.out.println("name : " + iterator.next().getName() 
    + System.getProperty("line.separator"));
    }
    }
    }class User {

    private String name;

    public String getName() {
    return name;
    } User(String name){this.name = name;} @Override
    public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + ((name == null) ? 0 : name.hashCode());
    return result;
    } @Override
    public boolean equals(Object obj) {
    if (this == obj)
    return true;
    if (obj == null)
    return false;
    if (getClass() != obj.getClass())
    return false;
    User other = (User) obj;
    if (name == null) {
    if (other.name != null)
    return false;
    } else if (!name.equals(other.name))
    return false;
    return true;
    }


    }
    需要重写hashCode 和 equals方法的!
      

  6.   

    public int hashCode() {
               @Override
        public boolean equals(Object obj) {
    这两个方法都要重写。 
      

  7.   

     输出的是地址 我的理解是你自己定义的类没有重写Object 的toString()方法.
       一个自定义的类直接输出 应该是类名@地址.
       而重写equals()和hashCode()方法 是因为 你的集合是Set 不准添加相同的元素
       判断两个元素是否相等的标准就是比较equals()方法. 而没有重写的话就直接用Object的equals()方法
         什么时候要重写 在Map 里 当索引是对象的时候重写.用hashCode比较 省事
       要是说错了 请指出...  谢谢!
      

  8.   

    Iterator没有用泛型。
    所以返回的是Object。