java思维导图
xmind导图配合精美文章,可视化学习,让java不再难懂。
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 要旧