码迷,mamicode.com
首页 > 编程语言 > 详细

java中的set集合

时间:2015-07-01 06:21:20      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:set

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;


public class SetTest01 {
/*
	Set集合:HashSet
	
	1.HashSet底层实际上是一个HashMap,HashMap底层采用了哈希表数据结构。
	
	2.哈希表又叫做散列表,哈希表底层是一个数组,这个数组中每一个元素
	是一个单向链表。每个单向链表都有一个独一无二的hash值,代表数组的
	下标。在某个单向链表中的每一个节点上的hash值是相等的。hash值实际上
	是key调用hashCode方法,在通过"hash function"转换成的值。
	3.如何向哈希表中添加元素:
		先调用被存储的key的hashCode方法,经过某个算法得出hash值,如果在
		这个哈希表中不存在这个 hash值,则直接加入元素。如果该hash值已经
		存在,继续调用key之间的equals方法,如果equals方法返回false,则将
		该元素添加。如果equals方法返回true,则放弃添加该元素。
	4.HashSet其实是HashMap中的key部分。HashSet有什么特点,HashMap中的key 应该具有相同的特点。
	5.HashMap和HashSet初始化容量都是 16,默认加载因子是0.75
*/
	//入口
	public static void main(String[] args){
		
		//创建Set集合
		Set s = new HashSet();
		
		//无序不可重复
		s.add(1);
		s.add(1);
		
		s.add(100);
		s.add(85);
		s.add(88);
		
		//遍历
		Iterator it = s.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
		
		
	//结论:存储在HashSet集合或者HashMap集合key部分的元素,需要同时重写hashCode+equals
                Set es = new HashSet();
		
		Employee e1 = new Employee("1000","JACK");
		Employee e2 = new Employee("1000","JACK");
		Employee e3 = new Employee("1000","SCOTT");
		Employee e4 = new Employee("2001","SUN");
		Employee e5 = new Employee("3000","JIM");
		Employee e6 = new Employee("3001","COOK");
		
		System.out.println(e1.hashCode());
		System.out.println(e2.hashCode());
		
		//添加元素
		es.add(e1);
		es.add(e2);
		es.add(e3);
		es.add(e4);
		es.add(e5);
		es.add(e6);
		
		//查看集合元素个数
		System.out.println(es.size()); //
	}
}


public class Employee {
	private String id;//id
	private String name;//name
	public String getNo() {
		return id;
	}
	public void setNo(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	//构造方法
	public Employee(String id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	public Employee(){
	}
	//重写了hashcode方法。
	public int hashCode() {
		return id.hashCode();
	}
	//重写了equals方法。
	public boolean equals(Object obj) {
		if(obj==this){
			return true;
		}else{
			if(obj instanceof Employee){
				Employee e = (Employee)obj;
				if(e.id.equals(this.id)&&e.name.equals(this.name)){
					return true;
				}
			}
		}
		return false;
	}
	


本文出自 “gaogaozi” 博客,请务必保留此出处http://hangtiangazi.blog.51cto.com/8584103/1669561

java中的set集合

标签:set

原文地址:http://hangtiangazi.blog.51cto.com/8584103/1669561

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!