java中map添加元素_Java中,在HashMap可以用put(Key, Value)添加元素, 如何在LinkedHashMap中添加(Key, Value)?...

展开全部

和HashMap方法一样,也是用put添加元素,LinkedHashMap也是java.util.Map的实现类

090f8b7dba7c03e7479481868cd12dcf.png

区别在于

Hashmap 是一个最常用的Map,它根据键的HashCode值存储数62616964757a686964616fe59b9ee7ad9431333365653739据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。

LinkedHashMap 是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比 LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。

TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
区别 HashMap 和 Hashtable: 1. 线程安全性:Hashtable 是线程安全的,HashMap 不是线程安全的。 2. Null 值:Hashtable 不允许 null 键和 null 值,而 HashMap 允许一个 null 键和多个 null 值。 3. 迭代器:Hashtable 的迭代器是 enumerator,而 HashMap 的迭代器是 Iterator。 4. 初始容量和扩容:Hashtable 的初始默认容量是 11,加载因子为 0.75,而 HashMap 的初始默认容量是 16,加载因子为 0.75。 区别 HashMapLinkedHashMap: 1. 插入顺序和访问顺序:LinkedHashMapHashMap 的基础上维护了一个双向链表,用来维护插入顺序或者访问顺序。可以根据插入顺序或者访问顺序来遍历 map。 2. 性能:LinkedHashMap 的插入、删除和定位性能略低于 HashMap,但是迭代访问时性能不受影响。 HashMap 的底层实现: 1. new HashMap() 会调用默认的构造函数,将初始容量设置为 16,负载因子设置为 0.75。 2. put(key, value) 方法先通过 key 的 hashCode() 方法计算出哈希值,然后通过哈希值和 HashMap 的长度计算出槽的索引位置,如果该位置没有元素,则直接插入到该位置。如果该位置已经有元素,则使用 equals() 方法判断 key 是否相等,相等则覆盖 value,否则以链表形式插入到该位置。如果链表长度超过了阈值(默认为 8),则将链表转化为红黑树,加速查找速度。当 HashMap 的元素数量超过了容量和负载因子的乘积时,会自动扩容、重新计算哈希值存储位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值