Chinaunix首页 | 论坛 | 博客
  • 博客访问: 328364
  • 博文数量: 47
  • 博客积分: 2667
  • 博客等级: 少校
  • 技术积分: 480
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-10 11:25
文章分类

全部博文(47)

文章存档

2015年(2)

2012年(4)

2011年(4)

2010年(37)

我的朋友

分类: Java

2010-03-23 15:47:13

所有已实现的接口:
, , , ,
 

TestHashSet 类main函数:

public class TestHashSet {    

    public static void main(String [] agrs){
        Set set = new HashSet();
        //添加一个string数据
        set.add("文本");
        //添加一个整数数据
        set.add(new Integer(5));
        //添加一个付点数据
        set.add(12.15);
        //输出集合大小
        System.out.println(set.size());
        //在添加个相同的文本
        set.add("文本");
        //输出大小
        System.out.println(set.size());
        //添加个null值
        set.add(null);
        //输出集合大小
        System.out.println(set.size());
        //再添加个null值
        set.add(null);
        //输出集合大小
        System.out.println(set.size());
        //判断是否存在null值
        System.out.println(set.contains(null));
        // 删除null值
        set.remove(null);
        //判断是否存在null值
        System.out.println(set.contains(null));
        //输出集合大小
        System.out.println(set.size());    

        Set set1 = new HashSet();
        UserInfo user = new UserInfo("abc","123");
        UserInfo user1 = new UserInfo("abc","123");
        set1.add(user);
        System.out.println(set1.size());
        //判断是否存在user1这个对象
        System.out.println(set1.contains(user1));
        user.setName("xyz");
        user.setPassword("aaa");
        //在更改了user值后user1还存在吗?
        System.out.println(set1.contains(user1));    

    }
}  

UserInfo 类:

public class UserInfo {
    private String name;
    private String password;
    private int HASHCODE= Integer.MIN_VALUE;    

    public UserInfo(String name,String password){
        this.name = name;
        this.password = password;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }    

    public int hashCode() {
        if (HASHCODE == Integer.MIN_VALUE) {
           // 重新生成本类的hashCode
          HASHCODE = name.hashCode() + password.hashCode();
        }
        return HASHCODE;
      }     

    //判断值是否相等
    public boolean equals(Object obj) {
        if(obj == null || !(obj  instanceof  UserInfo)){
            return false;
        }
        UserInfo user = (UserInfo)obj;
        return this.name == user.name && this.password ==  user.password;
    }
}    
1. HashSet允许null值。

2. HashSet中值不能重复。

3. Hashset在判断是否存在同一个对象的时候首先会判断对象的hashcode是否相等,然后在判断对象的equals()是否相等。

4.它不保证 set 的迭代顺序,特别是它不保证该顺序恒久不变;

5.此实现不是同步的。

   //Set s = Collections.synchronizedSet(new HashSet(...));

阅读(2083) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~