分类: 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(...));