
Java集合
文章平均质量分 91
Java集合系列
路上阡陌
千年暗室,一灯即明
展开
-
Java集合常见面试题(六)
这是因为 isEmpty() 方法的可读性更好,并且时间复杂度为 O(1)。绝大部分我们使用的集合的 size() 方法的时间复杂度也是 O(1),不过,也有很多复杂度不是 O(1) 的,比如 java.util.concurrent 包下的某些集合(ConcurrentLinkedQueue 、ConcurrentHashMap…)。下面是 ConcurrentHashMap 的 size() 方法和 isEmpty() 方法的源码。原创 2023-02-03 16:42:20 · 780 阅读 · 0 评论 -
Java集合常见面试题(五)
JDK1.7中的ConcurrentHashMap 是由 Segment 数组结构和 HashEntry 数组结构组成,即ConcurrentHashMap 把哈希桶切分成小数组(Segment ),每个小数组有 n 个 HashEntry 组成。其中,Segment 继承了 ReentrantLock,所以 Segment 是一种可重入锁,扮演锁的角色;HashEntry 用于存储键值对数据。原创 2023-01-31 15:03:21 · 610 阅读 · 0 评论 -
Java集合常见面试题(四)
为了能让 HashMap 存取高效,尽量较少碰撞,也就是要尽量把数据分配均匀。Hash 值的范围值-2147483648 到 2147483647,前后加起来大概 40 亿的映射空间,只要哈希函数映射得比较均匀松散,一般应用是很难出现碰撞的。但问题是一个 40 亿长度的数组,内存是放不下的。所以这个散列值是不能直接拿来用的。用之前还要先做对数组的长度取模运算,得到的余数才能用来要存放的位置也就是对应的数组下标。这个数组下标的计算方法是“ (n - 1) & hash”。(n 代表数组长度)。原创 2023-01-25 10:10:26 · 1338 阅读 · 0 评论 -
Java集合常见面试题(三)
一般我们需要对一个集合使用自定义排序时,我们就要重写compareTo()方法或compare()方法,当我们需要对某一个集合实现两种排序方式,比如一个 song 对象中的歌名和歌手名分别采用一种排序方法的话,我们可以重写compareTo()方法和使用自制的Comparator方法或者以两个 Comparator 来实现歌名排序和歌星名排序,第二种代表我们只能使用两个参数版的 Collections.sort().# Comparator 定制排序。底层数据结构不同又导致这三者的应用场景不同。原创 2023-01-18 09:34:35 · 480 阅读 · 0 评论 -
Java集合常见面试题(二)
ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。ArrayList继承于 AbstractList ,实现了 List, RandomAccess, Cloneable, java.io.Serializable 这些接口。原创 2023-01-16 09:09:49 · 541 阅读 · 0 评论 -
Java集合常见面试题(一)
Java 集合, 也叫作容器,主要是由两大接口派生而来:一个是 Collection接口,主要用于存放单一元素;另一个是 Map 接口,主要用于存放键值对。对于Collection 接口,下面又有三个主要的子接口:List、Set 和 Queue。注意:Collection是一个接口,Collections是一个工具类,Map不是Collection的子接口。ListArrayList: Object[] 数组;Vector:Object[] 数组;原创 2023-01-11 11:23:33 · 392 阅读 · 0 评论