集合框架_06_HashSet集合

原创 2016年08月20日 17:55:44
/*
|--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;
	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

黑马程序员-------集合框架之HashSet

列举HashSet集合中存储自定义对象的一个代码实例: 功能要求: 定义自定义对象:人,姓名和年龄相同为同一人(即重复元素),将对象存入集合中去。 分析:HashSet底层数据结构是哈希表...

集合框架(HashSet,HashMap,HashTable)

一,Map集合的基本操作 package fighting; import java.util.Collection; import java.util.HashMap; import j...

Java基础之集合框架(一)--Collection、List、LinkedList、HashSet

集合框架图: Collection接口: import java.util.*; /* Collection定义了集合框架的共性功能。 1,添加 add(e); addAll(col...

java集合框架之HashSet类

1.Set是Collection子接口 模拟了数学上的集的概念。 -----------------------------------------------------------------...

java集合框架学习—HashSet的实现原理

转自:http://zhangshixi.iteye.com/blog/6731431.    HashSet概述:   HashSet实现Set接口,由哈希表(实际上是一个HashMap实例)支持。...
  • FG2006
  • FG2006
  • 2011年05月06日 17:18
  • 972

Java集合框架(Set与Map,HashSet与HashMap,TreeSet与TreeMap)

定义

黑马程序员_JavaSE基础17 之 集合框架 Vector LinkedList ArrayList HashSet LinkedHasSet TreeSet

---------------------- android培训、java培训、期待与您交流! --------------------- JavaSE_17 笔记 ...
  • Mary_k
  • Mary_k
  • 2012年09月17日 19:21
  • 248

JavaSE 集合框架(5)-HashMap和HashSet的区别

HashMap和HashSet的区别是Java面试中最常被问到的问题。如果没有涉及到Collection框架以及多线程的面试,可以说是不完整。而Collection框架的问题不涉及到HashSet和H...

黑马程序员——第14天——(API)集合框架(ArraryList,LinkedList,HashSet)

ArraryList import java.util.*; /* 1,add方法的参数类型是Object。以便接受任意类型对象。 2,集合中存储的都是对象的引用(地址) 什么是迭代器? 其实就...

09.集合框架(二)【Set】【HashSet】【TreeSet】

一.Set集合(接口) 1.概述 Set集合中元素不可以重复,无序。 Set集合中的方法和Collection一致。 Set集合只有一种取出方式:Iterator迭代器。          2.Set...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:集合框架_06_HashSet集合
举报原因:
原因补充:

(最多只允许输入30个字)