集合框架_06_HashSet集合
2016-08-20 17:55
197 查看
/* |--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复。、 |--HashSet:底层数据结构是哈希表。是线程不安全的。不同步。 HashSet是如何保证元素唯一性的呢? 是通过元素的两个方法,hashCode和equals来完成。 如果元素的HashCode值相同,才会判断equals是否为true。 如果元素的hashcode值不同,不会调用equals。 注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。 |--TreeSet: Set集合的功能和Collection是一致的。 */ class HashSetDemo { public static void sop(Object obj) { System.out.println(obj); } public static void main(String[] args) { HashSet hs = new HashSet(); sop(hs.add("java01")); sop(hs.add("java01")); hs.add("java02"); hs.add("java03"); hs.add("java03"); hs.add("java04"); Iterator it = hs.iterator(); while(it.hasNext()) { sop(it.next()); } } }
HashSet存放自定义元素
/*
往hashSet集合中存入自定对象
姓名和年龄相同为同一个人,重复元素。
*/
class HashSetTest {
public static void sop(Object obj) {
System.out.println(obj);
}
public static void main(String[] args) {
HashSet hs = new HashSet();
hs.add(new Person("a1", 11));
hs.add(new Person("a2", 12));
hs.add(new Person("a3", 13));
// hs.add(new Person("a2",12));
// hs.add(new Person("a4",14));
// sop("a1:"+hs.contains(new Person("a2",12)));
// hs.remove(new Person("a4",13));
Iterator it = hs.iterator();
while (it.hasNext()) {
Person p = (Person) it.next();
sop(p.getName() + "::" + p.getAge());
}
}
}
class HashSetPerson {
private String name;
private int age;
HashSetPerson(String name, int age) {
this.name = name;
this.age = age;
}
public int hashCode() {
System.out.println(this.name + "....hashCode");
return name.hashCode() + age * 37;
}
public boolean equals(Object obj) {
if (!(obj instanceof Person))
return false;
HashSetPerson p = (HashSetPerson) obj;
System.out.println(this.name + "...equals.." + p.name);
return this.name.equals(p.name) && this.age == p.age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
相关文章推荐
- 黑马程序员--07.集合框架--06.【HashSet】
- 09.集合框架(二)【Set】【HashSet】【TreeSet】
- JAVA学习【7】集合框架与Arraylist、Linkedlist、HashSet的基本用法
- java--集合框架的Hashset和Treeset
- Java基础知识强化之集合框架笔记42:Set集合之LinkedHashSet的概述和使用
- 17-集合框架-19-常用对象API(集合框架-HashSet存储自定义对象)
- 集合框架-HashSet存储元素保证唯一性的图解
- selenium的TestNG框架注解,测试集合,用例分组,依赖测试,特定顺序执行,跳过某个case执行,自定义日志,断言_06
- 黑马程序员_JAVA笔记14——集合框架(List、HashSet、TreeSet)
- [javaSE] 集合框架(HashSet)
- 【Java_集合框架Set】HashSet、LinkedHashSet、TreeSet使用区别
- 集合框架 HashSet集合
- Java之集合框架 Set集合的特性以及LinkedHashSet的特性
- 集合框架-HashSet对象判重
- 06_集合框架
- Java基础--集合框架(HashSet、TreeSet、泛型)
- Java学习_06_二进制、位运算&移位运算、集合框架
- 【集合框架】JDK1.8源码分析HashSet && LinkedHashSet(八)
- 集合框架__【Set集合】【HashSet】【TreeSet】
- 深入集合框架之HashSet源码剖析