HashTable HashMap TreeMap LinkedHashMap 区别

参考:http://blog.csdn.net/xiaodifa995455120/article/details/7277441

http://www.apkbus.com/forum.php?mod=viewthread&tid=52426

Hashmap 是一个 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。
HashMap最多只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力.用synchronized修饰操作HashMap的语句块或方法

如:

 Map systemUsers = Collections.synchronizedMap(new HashMap());

HashTable 它不允许记录的键或者值为空;它支持线程的同步,速度比较慢。

TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的,它不允许记录的键或者值为空。运用:http://my.oschina.net/liyuanjinglyj/blog/126539   key值 实现Comparable 后  加入后自动排序 ,iterater 读取时 有顺序。

LinkedHashMap LinkedHashMap,键和值可以为null,可以使插入的顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。

时间: 2024-10-29 13:38:56

HashTable HashMap TreeMap LinkedHashMap 区别的相关文章

对比hashtable,hashmap,treemap的区别

一:hashtable线程安全,不支持null键和值,hashmap支持null键和值,treemap是红黑树实现的,可以通过key的comparotor实现排序,还有原始类型的自然顺序,它的get,remove,add都是logn时间复杂度 二:hashmap 的实现原理,负载因子,容量,多线程导致的循环占用cpu,size不准确 三: 四:用到集合的时候一定要考虑自己创建的对象是否需要从新实现equals和hashcode方法.如果用到hashmap,一定要注意这俩个方法.这俩个都要实现,不

hashMap、hashTable、treeMap的区别

1.hashTable是线程安全的.hashMap不是线程安全的 hashmap 线程不安全 允许有null的键和值 效率高一点. 方法不是Synchronize的要提供外同步 有containsvalue和containsKey方法 HashMap 是Java1.2 引进的Map interface 的一个实现 HashMap是Hashtable的轻量级实现 hashtable 线程安全 不允许有null的键和值 效率稍低. 方法是是Synchronize的 有contains方法方法 .Ha

对比Hashtable,HashMap,TreeMap,谈谈对HashMap的理解

都实现了Map接口,存储的内容是基于key-value的键值对映射,一个映射不能有重复的键,一个键最多只能映射一个值. 1.初始化的时候:HashTable在不指定容量的情况下的默认容量是11,且不要求底层数组的容量一定要为2的整数次幂:HashMap默认的容量为16,且要求容量一定为2的整数次幂. 2.HashTable,HashMap具有无序特性.TreeMap是利用红黑树实现的,实现了SortMap接口,能够根据保存的键的记录进行排序.所以需要使用排序则选择TreeMap,默认为升序排序,

HashMap TreeMap LinkedHashMap

HashMap 键是Student值 是String 的案例 键是Student, 如果不重写,则键肯定不一致, 所以需要重写键对象的hashcode() equals() LinkedHashMap 底层是链表,怎么存怎么取 TreeMap 键如果是自定义对象,则该对象必须有比较的功能 public class demon7_hashmapHashMap { /* * 嵌套HashMap * 键是学生 值是学生归属地 * 有多个班级 键是班级 值是班级号 */ public static vo

Java HashMap LinkedHashMap 区别及原理

HashMap原理 HashMap是Map的一个常用的子类实现.其实使用散列算法实现的. HashMap内部维护着一个散列数组(就是一个存放元素的数组),我们称其为散列桶,而当我们向HashMap中存入一组键值对时,HashMap首先获取key这个对象的hashcode()方法的返回值,然后使用该值进行一个散列算法,得出一个数字,这个数字就是这组键值对要存入散列数组中的下标位置. 那么得知了下标位置后,HashMap还会查看散列数组当前位置是否包含该元素.(这里要注意的是,散列数组中每个元素并非

HashMap、TreeMap、Hashtable、LinkedHashMap区别

HashMap 允许设置key和value为null,key存放是乱序的,不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致.如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap,访问速度快,因为它根据key的HashCode 值来存储数据 public static void main(String[] args) { System.out.println(

HashMap,LinkedHashMap,TreeMap的区别(转)

Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复.Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的.HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致.如果需要同步,可以用 Collections的synchronizedM

【转】java 容器类使用 Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别

原文网址:http://www.360doc.com/content/15/0427/22/1709014_466468021.shtml java 容器类使用 Collection,Map,HashMap,hashTable,TreeMap,List,Vector,ArrayList的区别. 经常会看到程序中使用了记录集,常用的有Collection.HashMap.HashSet.ArrayList,因为分不清楚它们之间的关系,所以在使用时经常会混淆,以至于不知道从何下手.在这儿作了一个小例

HashMap 、HashTable、TreeMap、WeakHashMap的区别是什么

Java为数据结构中的映射定义了一个接口java.util.Map,它有4个实现类:HashTable.HashMap.TreeMap.WeakHashMap. HashMap和HashTable的区别: 1)HashMap是JDK1.2引进的一个Map接口的实现,HashTable实现Map接口的同时也继承了抽象类Dictionary. 2)HashMap不是线程安全的,HashTable是线程安全的:就效率而言,HashMap可能高于HashTable. 3)HashMap允许空键值(即nu