HashMap、LinkedHashMap和TreeMap的区别

HashMap无序,实现基于哈希表,查询效率高但非线程安全;LinkedHashMap结合了HashMap和双向链表,保证有序且查询效率近似O(1),同样非线程安全;TreeMap基于红黑树,有序,查询效率平均O(log n),线程安全。LinkedHashMap适合需要有序性和查询效率的场景,而ConcurrentHashMap则为线程安全的高并发HashMap实现。
摘要由CSDN通过智能技术生成

1、有序性

HashMap                无序

LinkedHashMap      有序(存值的顺序)

TreeMap                  有序(键值的顺序)

2、实现及效率


HashMap                是基于散列表,基于哈希表实现,时间复杂度平均能达到O(1)。

LinkedHashMap      HashMap和双向链表合二为一即是LinkedHashMap时间复杂度O(1)。

TreeMap                  基于红黑树(一种自平衡二叉查找树)实现的,时间复杂度平均能达到O(log n)。

HashMap与TreeMap 比较,HashMap查询效率高但是无序,TreeMap有序但是查询效率低。LinkedHashMap保证有序和查询效率。

3、线程安全

HashMap              非线程安全

LinkedHashMap   非线程安全

TreeMap               线程安全

4、key是否可以为null

HashMap              可以

LinkedHashMap   可以

TreeMap               不可以(会报错java.lang.NullPointerException)


代码如下:

package com.soecode.lyf.web.test;

import
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值