精华内容
下载资源
问答
  • 它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode值存储...

    java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap.
    Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。
    Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。
    Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。
    LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
    TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。
    一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列.
    HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL。
    HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。
    Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢。
    LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。
    在遍历的时候会比HashMap慢TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。

    总结:map 常用的键值对
    hashmap 无序根据键的hash值取得value 线程不安全
    hashtable 无序 key不能为null 线程安全
    treemap key值顺序
    linkedhashmap 插入顺序
    concurrenthashmap synchronizedMap 是线程安全的

    展开全文
  • Hashtable LinkedHashMap 和TreeMap.  Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它...

    Java数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap  Hashtable  LinkedHashMap 和TreeMap. 

    Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 Hashmap 是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。

     HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

    Hashtable与 HashMap类似,它继承自Dictionary类,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了 Hashtable在写入时会比较慢。 
    LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。 
    TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。 
    一般情况下,我们用的最多的是HashMap,在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。如果需要输出的顺序和输入的相同,那么用LinkedHashMap 可以实现,它还可以按读取顺序来排列. 
    HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为NULL,允许多条记录的值为NULL。 
    HashMap不支持线程同步,即任一时刻可以有多个线程同时写HashMap,可能会导致数据的不一致性。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。 
    Hashtable与HashMap类似,不同的是:它不允许记录的键或者值为空;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtable在写入时会比较慢。 
    LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。 
    在遍历的时候会比HashMap慢TreeMap能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器。当用Iterator遍历TreeMap时,得到的记录是排过序的。

    总结:map 常用的键值对 
    hashmap 无序根据键的hash值取得value 线程不安全 
    hashtable 无序 key不能为null 线程安全 
    treemap key值顺序 
    linkedhashmap 插入顺序 
    concurrenthashmap synchronizedMap 是线程安全的


    展开全文
  • HashMap HashTable TreeMap WeakHashMap 有哪些区别 java中java.util.Map接口中,包含有:HashMap,HashTable,TreeMap。Map是用来存储键值对的数据结构,在数组中通过数组下标来对其内容索引的,而在Map中,则是...

    HashMap HashTable TreeMap 和 WeakHashMap 有哪些区别

    java中java.util.Map接口中,包含有:HashMap,HashTable,TreeMap。Map是用来存储键值对的数据结构,在数组中通过数组下标来对其内容索引的,而在Map中,则是通过对象来进行索引的,用来索引的对象叫做key,其对应的对象叫做value

    HashMap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,具有很快的访问速度。由于HashMap和HashTable都采用了hash法进行索引,因此二者具有很多相似之处,它们主要有如下一些区别:

    1.HashMap是HashTable的轻量级实现(非线程安全的实现),它们都完成了Map接口,主要区别在于HashMap允许key和value都为null(但是最多只允许一条记录的键为null,不允许多条记录的值为null),而HashTable不允许!

    2.HashMap把HashTablecontains方法去掉了,改成containsvalue和containsKey,因为contains方法容易让人引起误解。HashTable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

    3.HashTable的方法是线程安全的,而HashMap不支持线程同步,所以它不是线程安全的。在多个线程访问 HashTable时,不需要开发人员对他进行同步,而对于HashMap而言开发人员必须提供额外的同步机制,所以就效率而言HashMap可能高于HashTable

    4.HashTable使用EnumerationHashMap使用Iterator

    5.HashTableHashMap采用的hash/rehash算法几乎一样,所以性能不会有很大的差异

    6.在HashTable中,hash数组默认的大小是11,增加的方式是old×2+11HashMap中,hash数组的默认大小是16而且一定是2的指数

    7.hash值的使用不同,HashTable直接使用对象的hashCode

    以上3种类型中,使用最多的是HashMapHashMap里面存入的键值对在取出时没有固定的顺序,是随机的。一般而言在Map中插入删除和定位元素,HashMap是最好的选择。由于TreeMap实现了SortMap接口,能够把它保存的记录根据键排序,因此取出来的是排序后的键值对,如果需要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。LinkedHashMap是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按照读取顺序来排列。
    WeakHashMap与HashMap类似,二者的不同之处在与WeakHashMap中的key采用的是"弱引用"的方式,只要WeakHashMap中的key不再被外部引用,它就可以被垃圾回收器回收。而HashMap采用的是"强引用方式",当HashMap中的key没有被外部引用时,只有在这个keyHashMap中删除后,才可以被垃圾回收器回收。

    补充说明

    1.HashTable上下文中,同步是指什么?
    同步就意味着在一个时间点,只能有一个线程可以修改hash表,任何线程在执行HashTable的更新操作前都需要获取对象锁,其他线程则等待锁的释放

    2.实现HashMap的同步
    HashMap可以通过 Map m = Collections.synchronizedMap(new HashMap()) 来达到同步的效果,具体而言,该方法返回一个同步的Map,该Map封装了底层的HashMap的所有方法,使得底层的HashMap即使是在多线程的环境中也是安全的!

    展开全文
  • HashMap和Hashtable,TreeMap的区别

    千次阅读 2017-09-13 14:05:57
    1.HashMap和Hashtable以及TreeMap都实现了Map接口; 2.HashMap和TreeMap是非线程安全的,而Hashtable是线程安全的,因为Hashtable里的方法使用Synchronize关键字修饰的; 3.因为HashTable使用了Synchronize关键字...

    1.HashMap和Hashtable以及TreeMap都实现了Map接口;
    2.HashMap和TreeMap是非线程安全的,而Hashtable是线程安全的,因为Hashtable里的方法使用Synchronize关键字修饰的;
    3.因为HashTable使用了Synchronize关键字修饰,其性能比较差;而且HashMap中的key和value值都能为null值Hashtable中的key和value值都不能为null

    4、TreeMap中的数据是根据key值对象中的对比方法(comparaTo)的运行结果进行。而HashMap 和Hashtable的key值分布都是以哈希分布的方式存放 ,同时TreeMap也是线程不同步的

    展开全文
  • HashMap HashTable TreeMap

    2018-03-02 14:05:05
    V)键值对形式的存储结构,在编程中经常被用到,常用的实现类有:HashMap, HashTable, TreeMap.HashMap的实现原理:HashMap是数组链表的结合体。从图中可以看出,HashMap底层就是一个数组结构,数组中的每一项又.....
  • HashMap和Hashtable的区别 HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 HashMap几乎可以等价于Hashtable,...
  • java为数据结构中的映射定义了一个接口java.util.Map,而HashMap Hashtable和TreeMap就是它的实现类。Map是将键映射到值的对象,一个映射不能包含重复的键;每个键最多只能映射一个一个值。  Hashmap 是一个最...
  • HashMap和Hashtable以及TreeMap的区别

    千次阅读 2016-12-19 11:47:27
    而且前段时间面试,一般情况下面试官喜欢问HashMap和Hashtable的主要区别,其用意是想问被面试者这俩那个是线程安全的。但是HashMap和Hashtable之间的差别不止线程安全那么简单。两者的主要区别如下: 相同点:都...
  • HashMapHashTable和TreeMap 是Map接口下三个重要的集合类。 树默认的是红黑树算法 HashMap 默认的初始化大小是16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 最大容量是2的30...
  • 一类是保存双列数据的Map接口,常见的实现类为Hashmap , Hashtable TreeMap,Properties Map 接口的特点 Hashmap 底层结构 Hashmap 源码 Hashtable 底层结构 Hashtable 源码 **Hashmap Hashtable 对比 ** ...
  • 前言:HashMapHashtableTreeMap都是java.util.Map接口的实现类,都是通过key-value存储。不同的是,TreeMap同时又实现了SortMap接口,能够把它保存的记录根据键排序。WeakHashMap是HashMap的一个子类。 ...
  • TreeMap是 有序的,HashMap和HashTable是无需的 HashTable的方法是同步的,HashMap的方法不是同步的,这是两者最主要的区别。这就意味着HashTable是线程安全的,HashMap不是线程安全的。HashMap效率较高,HashTable...
  • hashmap hashtable treemap

    2017-07-28 19:32:21
    Map接口Map接口储存一组成对的键-值对象,提供key(键)到...Entry =Key-Value (键值对)Map接口中键值一一映射. 可以通过键来获取值1.Map集合里保存着两组值: 一组用于保存Map里的key 一组用于保存Map里的value2.
  • HashMap Hashtable LinkedHashMap TreeMap WeakHashMap ConcurrentMap 区别 java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap. Map主要...
  • mapmap基本操作,hashmap与hashtable区别,hashmap需要注意的点转载,hashmap,linkedmap,treemap一些总结hashmap和treemap区别 map基本操作,hashmap与hashtable区别,hashmap需要注意的点 map存储的是k-v键值对...
  • 一、HashMap(数组+链表+红黑树) 1、HashMap根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 2、HashMap最多只允许一条记录的键为null,允许多...
  • HashMapHashTable和TreeMap有什么不同 答案 HashMap允许使用 null 值 null 键,不保证映射的顺序恒久不变。 迭代HashMap 实例所需时间与其容量及当前关系数量大小成比例。HashMap 的实例有两个参数影响其性能:...
  • java为数据结构中的映射定义了一个接口java.util.Map,而HashMap Hashtable和TreeMap就是它的实现类。Map是将键映射到值的对象,一个映射不能包含重复的键;每个键最多只能映射一个一个值。 Hashmap是一个最常用的...
  • Java为数据结构中的映射定义...HashMap和HashTable都采用hash法进行索引,但二者还有一些区别。 HashMap HashTable 安全性 不安全,不同步 安全,同步 key值 允许为null 不允许为null cont...
  • HashMap 1.允许键、值都是null(键只允许一个,值可以多个) 2.键重复,就直接执行值覆盖 3.顺序是不确定的 4.超过初始容量,将以二倍递增,大数据情况下...6.读写速度容量有关   HashTablehashMap基本等...
  • 首先对hash的了解:就是关键字,数据建立关系的映射。  hash常用算法:假设我们中的字符有相应的内部编码,当然在实际过程中,我们不可能将所有的编码当做hash值。  平方取中法,将所得的内部编码平方,取7-9...
  • java为数据结构中的映射定义了一个接口java.util.Map,它包括3个实现类:HashMapHashTable和TreeMap。Map是用来存储键值对应的数据结构,在数组的下标来对应其内容索引的,而在Map中,则是通过对象来进行索引,...
  • HashMapHashTable和TreeMap都是map接口的子类,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平时说的键值对。put时有相同的key,会覆盖该key对应的值。 ...
  • 1.TreeMap会对键进行排序,linkedHashmap 键怎么进去,怎么出来 hashMap值都没有顺序 ,如果hashMap的键是自定义的对象,则要实现hashcode()equals(); equals()只有两个引用指向同一个对象时,才会返回true, ...
  • 它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。---------------------------------------------------...
  •  这里面介绍的很详细。...1.hashmaphashtable  都是基于哈希表实现的,每个元素都是一个key--value对,对内部通过单链表解决冲突问题,容量不足时会自动增长,实现了Serializable接口,它支持序列化,实...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,880
精华内容 752
关键字:

hashmap和hashtabletreemap