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

Java基础—集合2Set接口和Map接口

时间:2016-03-19 12:49:14      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

第一讲 Set

一 概述

Set:1. 元素存储无下标,所以元素是无序(存入和取出的顺序不一定一致

  2. 元素不可以重复

|--HashSet:底层数据结构是哈希表。线程不同步。 保证元素唯一性的原理:判断元素的hashCode值是否相同。如果相同,还会继续判断元素的equals方法,是否为true。

|--TreeSet:可以对Set集合中的元素进行排序。默认按照字母的自然排序。底层数据结构是二叉树。保证元素唯一性的依据:compareTo方法return 0。       

Set集合没有特有的功能,Set集合的功能和Collection是一致的

二 HashSet

HashSet:线程不安全,存取速度快。

HashSet的原理: HashSet中不能存入重复的值,如果add()存入重复值,返回false,那么HashSet如何保证数据是不是唯一的呢?

如果在存储的时候逐个equals()比较, 效率较低,哈希算法提高了去重复的效率, 降低了使用equals()方法的次数

可以通过元素的两个方法,hashCode和equals来完成保证元素唯一性。如果元素的HashCode值相同,才会判断equals是否为true。如果元素的hashCode值不同,不会调用equals。

2. 知道了HashSet原理之后所以我们在存储自定义类的时候必须重写hashCode()和equals()方法

* hashCode(): 属性相同的对象返回值必须相同, 属性不同的返回值尽量不同(提高效率)

* equals(): 属性相同返回true, 属性不同返回false,返回false的时候存储 

 

Java基础—集合2Set接口和Map接口

标签:

原文地址:http://www.cnblogs.com/chenjinsen/p/5294707.html

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