集合
文章平均质量分 89
Java集合
思静鱼
大道至简,行稳致远
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HashMap和Hashtable的区别
Hashtable的查找、插入和删除操作平均时间复杂度为O(1),但是在极端情况下,因为哈希冲突的原因,可能会退化到O(n)。HashMap中可以存储null值和null键,但是要注意,当使用null作为键时,由于无法调用null的hashCode()方法,因此只能将其放在哈希表的第一个位置,它们是无序的。由于HashMap采用链表和红黑树的数据结构,可以更好地处理哈希冲突,因此HashMap的查找、插入和删除操作都是常数时间O(1),它的性能相对于Hashtable更高。原创 2024-08-13 10:43:44 · 638 阅读 · 0 评论 -
HashMap和TreeMap的区别
HashMap:数组方式存储key/value,线程非安全,允许null作为key和value,key不可以重复,value允许重复,不保证元素迭代顺序是按照插入时的顺序,key的hash值是先计算key的hashcode值,然后再进行计算,每次容量扩容会重新计算所以key的hash值,会消耗资源,要求key必须重写equals和hashcode方法。原创 2024-08-13 09:44:00 · 794 阅读 · 0 评论 -
ConcurrentHashMap原理详解
ConcurrentHashMap和HashMap一样,是一个存放键值对的容器。使用hash算法来获取值的地址,因此时间复杂度是O(1)。查询非常快。同时,ConcurrentHashMap是线程安全的HashMap。专门用于多线程环境。原创 2023-11-07 14:20:06 · 274 阅读 · 0 评论 -
HashMap详解和实现原理
HashMap1.7 版本中,底层是基于数组+链表实现的,如果发生Hash 冲突概率问题,会存放到同一个链表中,链表如果过长 会从头查询到尾部效率非常低HashMap1.8 版本 (数组容量>=64&链表长度大于8)就会将该链表转化红黑树。HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射 操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。原创 2023-11-06 22:58:19 · 385 阅读 · 0 评论 -
Set集合详解Java
元素的哈希值是通过元素的hashcode 方法来获取的, HashSet 首先判断两个元素的哈希值,如果哈希值一样,接着会比较equals 方法 如果 equls 结果为 true ,HashSet 就视为同一个元素。当你把对象加入 HashSet 时,HashSet 会先计算对象的 hashcode 值来判断对象加入的 位置,同时也会与其他加入的对象的 hashcode 值作比较,如果没有相符的 hashcode,另一方面,TreeSet是由一个树形的结构来实现的,它里面的元素是有序的。原创 2023-11-06 22:38:14 · 144 阅读 · 0 评论 -
HashMap详解
HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value 都可以为 null,此外,HashMap 中的映射不是有序的。默认初始16个大小,扩容*2 负载因子是0.75。原创 2023-11-06 23:08:16 · 138 阅读 · 0 评论 -
Java中for、foreach、stream区别和性能比较
如果数据量在10万的时候,stream效率最高,其次是foreach,最后是for。另外需要注意的是如果数据达到100万的话,parallelStream异步并行处理效率最高,高于foreach和for。stream().forEach 和 forEach 方法都可以使用在集合类上,但是有一些区别。在效率方面,stream().forEach、forEach 和 parallelStream 之间存在一些差异。stream().forEach() 和 forEach() 在使用方式和行为上有一些区别。原创 2023-11-17 23:07:49 · 12183 阅读 · 2 评论
分享