【一分钟知识】HashSet和TreeSet,HashMap与HashTable
HashSet和TreeSet
-
HashSet
-
哈希表实现的,HashSet中的数据是无序的。
-
不能保证元素的排列顺序,顺序有可能发生变化
-
不是同步的
-
集合元素可以是null,但只能放入一个null
-
当向HashSet集合中存入一个元素时,HashSet会调用该对象的hashCode()方法来得到该对象的hashCode值,然后根据 hashCode值来决定该对象在HashSet中存储位置。
-
-
TreeSet
-
二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值
-
TreeSet是SortedSet接口的唯一实现类,TreeSet可以确保集合元素处于排序状态。
-
TreeSet支持两种排序方式,自然排序和定制排序,其中自然排序为默认的排序方式。
-
向TreeSet中加入的应该是同一个类的对象。
-
TreeSet判断两个对象不相等的方式是两个对象通过equals方法返回false,或者通过CompareTo方法比较没有返回0。
-
HashMap与HashTable
-
HashMap
-
线程不安全
-
允许有null的键和值效率高一点
-
方法不是Synchronize的
-
要提供外同步有containsvalue和containsKey方法
-
HashMap 是Java1.2 引进的Map interface 的一个实现
-
HashMap是Hashtable的轻量级实现
-
-
HashTable
-
线程安全
-
不允许有null的键和值
-
效率稍低
-
方法是是Synchronize的有contains方法方法
-
Hashtable 继承于Dictionary 类、
-
Hashtable 比HashMap 要旧
-