Java集合框架
文章平均质量分 77
leo_messi94
这个作者很懒,什么都没留下…
展开
-
集合(八) -- 阻塞队列ArrayBlockingQueue和LinkedBlockingQueue
用数组实现的有界阻塞队列。此队列按照先进先出(FIFO)的原则对元素进行排序。默认情况下不保证访问者公平的访问队列,所谓公平访问队列是指阻塞的所有生产者线程或消费者线程,当队列可用时,可以按照阻塞的先后顺序访问队列,即先阻塞的生产者线程,可以先往队列里插入元素,先阻塞的消费者线程,可以先从队列里获取元素。通常情况下为了保证公平性会降低吞吐量。原创 2022-11-07 16:50:11 · 946 阅读 · 0 评论 -
Integer.numberOfLeadingZeros()详解
在查看jdk13的HashMap源码时,发现tableSizeFor方法中用到了Integer的这个方法: public static int numberOfLeadingZeros(int i) { // HD, Count leading 0's if (i <= 0) return i == 0 ? 32 : 0; ...原创 2020-05-07 15:02:56 · 1998 阅读 · 1 评论 -
集合框架(六) -- 基于红黑树的有序Map:TreeMap详解
// 获取节点p的颜色,如果为null则是黑色private static <K,V> boolean colorOf(Entry<K,V> p) { return (p == null ? BLACK : p.color);}// 获取节点p的父节点,如果p为null,返回nullprivate static <K,V> Entry<K,V> parentOf(Entry<K,V> p) { return (p == nu原创 2020-06-03 12:28:05 · 587 阅读 · 0 评论 -
集合框架(六) -- 基于HashMap+LinkedList的有序Map:LinkedHashMap详解
前言:LinkedHashMap是使用HashMap+LinkedList来实现Map接口。和HashMap的区别在于它维持一个双端链表保存所插入访问的节点。链表定义了迭代顺序,默认情况下顺序就是键值插入到Map的顺序(插入顺序)。构造方法为LinkedHashMap(int,float,boolean)的可用来创建一个按照访问顺序迭代的LinkedHashMap,按照最少访问到最多访问的顺序链接结点,这种LinkedHashMap可用来实现LRU缓存。另外由于jdk8的HashMap的源码发生了变化原创 2020-05-15 18:10:57 · 1474 阅读 · 0 评论 -
集合框架五 -- 基于jdk1.8及以后的HashMap
之前已经说过了1.7的HashMap源码,接下来来学习1.8 及以后的源码,注意,本文使用的是jdk13的源码定义继承和实现public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {和1.7相比没有什么变化常...原创 2020-05-11 17:43:37 · 430 阅读 · 0 评论 -
集合框架四 -- 基于jdk1.7的HashMap
由于1.8及以后HashMap的实现方式不同,所以这里我们分开讲,我们先从最新的开始,即1.8的HashMap源码解析。一.链表定义继承和实现public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable {①:Has...原创 2020-05-06 16:12:38 · 343 阅读 · 0 评论 -
集合框架(三)-- List接口及基于链表的实现类-LinkedList
一:链表综述LinkedList是基于链表实现的,所以先讲解一下什么是链表。链表原先是C/C++的概念,是一种线性的存储结构,意思是将要存储的数据存在一个存储单元里面,这个存储单元里面除了存放有待存储的数据以外,还存储有其下一个存储单元的地址(下一个存储单元的地址是必要的,有些存储结构还存放有其前一个存储单元的地址),每次查找数据的时候,通过某个存储单元中的下一个存储单元的地址寻找其后面的那个存...原创 2020-04-20 22:21:27 · 856 阅读 · 0 评论 -
集合框架(二)-- List接口及基于数组的实现类-ArrayList和Vector
一:List接口综述List接口继承实现Collection接口 List 有序,可重复 (为什么有序?因为数组有下标(index),链表有前标后标(next,prev)) List接口下有三个需要掌握的实现类:ArrayList,Vector,LinkedList ArrayLIst Vector LinkedList 允许空 是 是 是...原创 2020-04-14 10:50:27 · 344 阅读 · 0 评论 -
Collections工具类方法详解
1.sort()方法:对集合进行排序,默认升序,列表中元素需要实现Comparable接口源码:public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null);}例:public static void main (Strin...原创 2020-04-01 20:06:37 · 564 阅读 · 0 评论 -
Java集合随机访问接口:RandomAccess
引出RandomAccess类:最近在学习Collections工具类时,发现了一个RandomAccess接口:public static void reverse(List<?> list) { int size = list.size(); if (size < REVERSE_THRESHOLD || list instanceof R...原创 2020-03-30 23:41:47 · 495 阅读 · 0 评论