HashMap & Hashtable区别
2016-06-04 18:02
405 查看
•HashMap 和 Hashtable 是 Map 接口的两个典型实现类
•区别:
–Hashtable 是一个古老的 Map 实现类,不建议使用
–Hashtable 是一个线程安全的 Map 实现,但 HashMap 是线程不安全的。
–Hashtable 不允许使用 null 作为 key 和 value,而 HashMap 可以
•与 HashSet 集合不能保证元素的顺序的顺序一样,Hashtable 、HashMap 也不能保证其中 key-value 对的顺序
•Hashtable 、HashMap 判断两个 Key 相等的标准是:两个Key 通过 equals 方法返回 true,hashCode 值也相等。
•Hashtable 、HashMap 判断两个 Value相等的标准是:两个Value 通过 equals 方法返回 true
相关介绍
LinkedHashMap
•LinkedHashMap 是 HashMap 的子类
•LinkedHashMap 可以维护 Map 的迭代顺序:迭代顺序与 Key-Value 对的插入顺序一致
Properties
•Properties 类是 Hashtable 的子类,该对象用于处理属性文件
•由于属性文件里的 key、value 都是字符串类型,所以properties 里的 Key 和 Value 都是字符串类型的
TreeMap
•TreeMap 存储 Key-Value 对时,需要根据 Key 对 key-value 对进行排序。TreeMap 可以保证所有的 Key-Value 对处于有序状态。
•TreeMap 的 Key 的排序:
–自然排序:TreeMap 的所有的 Key 必须实现 Comparable 接口,而且所有的 Key 应该是同一个类的对象,否则将会抛出ClasssCastException
–定制排序:创建 TreeMap 时,传入一个 Comparator对象,该对象负责对 TreeMap 中的所有 key 进行排序。此时不需要 Map 的 Key 实现 Comparable 接口
•区别:
–Hashtable 是一个古老的 Map 实现类,不建议使用
–Hashtable 是一个线程安全的 Map 实现,但 HashMap 是线程不安全的。
–Hashtable 不允许使用 null 作为 key 和 value,而 HashMap 可以
•与 HashSet 集合不能保证元素的顺序的顺序一样,Hashtable 、HashMap 也不能保证其中 key-value 对的顺序
•Hashtable 、HashMap 判断两个 Key 相等的标准是:两个Key 通过 equals 方法返回 true,hashCode 值也相等。
•Hashtable 、HashMap 判断两个 Value相等的标准是:两个Value 通过 equals 方法返回 true
相关介绍
LinkedHashMap
•LinkedHashMap 是 HashMap 的子类
•LinkedHashMap 可以维护 Map 的迭代顺序:迭代顺序与 Key-Value 对的插入顺序一致
Properties
•Properties 类是 Hashtable 的子类,该对象用于处理属性文件
•由于属性文件里的 key、value 都是字符串类型,所以properties 里的 Key 和 Value 都是字符串类型的
TreeMap
•TreeMap 存储 Key-Value 对时,需要根据 Key 对 key-value 对进行排序。TreeMap 可以保证所有的 Key-Value 对处于有序状态。
•TreeMap 的 Key 的排序:
–自然排序:TreeMap 的所有的 Key 必须实现 Comparable 接口,而且所有的 Key 应该是同一个类的对象,否则将会抛出ClasssCastException
–定制排序:创建 TreeMap 时,传入一个 Comparator对象,该对象负责对 TreeMap 中的所有 key 进行排序。此时不需要 Map 的 Key 实现 Comparable 接口
相关文章推荐
- Android Native 绘图方法
- c语言实现hashmap(转载)
- C#中struct和class的区别详解
- C#中遍历Hashtable的4种方法
- VBS ArrayList Class vbs中的数组类
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- C#中Ilist与list的区别小结
- C#中IList<T>与List<T>的区别深入解析
- C#对list列表进行随机排序的方法
- Vc++ 控件List Control用法总结
- C++实现的泛型List类分享
- C#将HashTable中键列表或值列表复制到一维数组的方法
- 深入了解PHP类Class的概念
- jquery 表单验证之通过 class验证表单不为空
- asp.net基于HashTable实现购物车的方法
- C#使用IComparer自定义List类实现排序的方法
- C# Datagridview绑定List方法代码
- 详解C#中HashTable的用法
- setAttribute 与 class冲突解决
- JavaScript通过HTML的class来获取HTML元素的方法总结