集合框架_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;
	}
}


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

集合框架中几种集合的关系和区别

一、ArrayList VS HashSet 1.是否有顺序 ArrayList   有顺序 HashSet   无顺序 2.能否重复 List中的数据可以重复 Set中的数据不能重复      重复...
  • u012813154
  • u012813154
  • 2017年03月16日 11:21
  • 281

集合框架--集合框架体系概述

集合框架体系主要如上图所示,集合类主要分为两大类:Collection和Map。 先简单概述几个相关问题。 1、先说明下什么是集合?       当数据多了需要存储,需要容器,但是数据的个数又不确定的...
  • wunian_930124
  • wunian_930124
  • 2017年03月09日 09:42
  • 1319

集合框架示意图

如何选择? 1、容器类和Array的区别、择取 * 容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。 * 一旦将对象置入容器内,便损失了该对象的型别信息。 2、 *...
  • qq_27918787
  • qq_27918787
  • 2016年09月19日 11:05
  • 925

java集合框架小练习

List接口和ArrayList类练习 定义一个List对象,如下 List list = new ArrayList(); 在list中添加元素,nih...
  • always14
  • always14
  • 2015年09月28日 23:12
  • 769

常用的web前端框架 --- 集合框架

1.插件集合 (1)jQuery EasyUI    http://www.jeasyui.com/ jQuery EasyUI是一组基于jQuery的UI插件集合,而jQuery EasyUI的目标...
  • tianwei7518
  • tianwei7518
  • 2014年01月22日 10:18
  • 1939

牛逼笔记:5分钟搞定java集合框架

java集合视频版点击查看   java集合就是一个容器。 1.     集合概述 l       为了保存不确定的数据,或者对象,以及保存具有映射关系的数据。 l       所有的集...
  • bondsui
  • bondsui
  • 2013年01月19日 14:49
  • 2141

Java 集合框架分析:线程安全的集合

说明:同步集合是说它的操作是同步的,(mutative operations :add, set, and so on),但是它的组合操作的同步性要自己控制。线程安全的集合什么是线程安全在多线程环境下...
  • youyou1543724847
  • youyou1543724847
  • 2016年10月04日 18:44
  • 1101

集合框架(一)——概述

集合框架构成图: 大纲: 1.      数组容器和集合的区别; 2.      集合框架的由来; 3.      Collection中的共性方法 4.      迭代器,...
  • watermusicyes
  • watermusicyes
  • 2012年09月16日 20:12
  • 3088

Java集合框架总结—超详细-适合面试

一、概念汇总     1、Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。   ...
  • langjian2012
  • langjian2012
  • 2015年03月16日 15:50
  • 9376

Java集合框架的继承关系图

Java集合框架图 1. Collection 2. Map
  • Nancy_2
  • Nancy_2
  • 2017年08月13日 10:56
  • 320
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:集合框架_06_HashSet集合
举报原因:
原因补充:

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