您的位置:首页 > 编程语言 > Java开发

HashMap、HashTable、HashSet分析比较以及TreeSet的简单介绍

2016-09-03 18:31 375 查看

HashSet:
Set类不允许其中存在重复的元素(集),无法添加一个重复的元素(Set中已经存在)。Set定义的是一个集合,可以存储字符串、数值或对象等。
HashSet利用Hash函数进行了查询效率上的优化,其contain()方法经常被使用,以用于判断相关元素是否已经被添加过。HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束。
HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的 String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例

Hashtable:哈希表是一种重要的存储方式,也是一种常见的检索方法。其基本思想是将关系码的值作为自变量,通过一定的函数关系计算出对应的函数值,把这个数值解释为结点的存储地址,将结点存入计算得到存储地址所对应的存储单元。检索时采用检索关键码的方法。现在哈希表有一套完整的算法来进行插入、删除和解决冲突。在Java中哈希表用于存储对象,实现快速检索。
HashMap:提供了key-value的键值对数据存储机制,可以十分方便的通过键值查找相应的元素,而且通过Hash散列机制,查找十分的方便。
HashtableHashMap类有三个重要的不同之处。
   第一个不同:Hashtable是(继承)基于陈旧的Dictionary类的,HashMap是Java
1.2引进的Map接口的一个实现。
   第二个不同:Hashtable的方法是同步的,而HashMap的方法不是。
   第三点不同:只有HashMap可以让你将空值作为一个表的条目的key或value。
  一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。

TreeSet:底层数据结构是:二叉树,它可以给Set集合中的元素进行指定方式的排序,它在讲对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中,按照“升序”排列。不允许放入null值。保证元素唯一性的方式:通过比较的结果是否为0,即comparable接口。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA 常用容器