java
文章平均质量分 51
介绍java的一些基础知识
半__夏
路漫漫其修远兮,吾将上下而求索。
展开
-
阻塞队列之 LinkedBlockingQueue
介绍java阻塞队列的概念原创 2022-04-23 00:13:27 · 618 阅读 · 0 评论 -
并发集合
并发集合CopyOnWriteArrayListprivate transient volatile Object[] array; // 通过volatile保证线程之间可见add()public boolean add(E e) { // 基于J.U.C的可重入锁,加锁 final ReentrantLock lock = this.lock; lock.lock(); try { Object[] elements = getArray();原创 2020-06-11 21:08:30 · 237 阅读 · 2 评论 -
LinkedList源码解读
LinkedList源码解读底层数据结构LinkedList底层维护了一个双向链表,每个节点包括一个前驱指针和后继指针private static class Node<E> { E item; // 实际数据 Node<E> next; // 前驱节点 Node<E> prev; // 后继节点 Node(Node<E> prev, E element, Node<E> next) {原创 2020-06-11 20:59:46 · 155 阅读 · 0 评论 -
ArrayList源码解读
ArrayList源码解读底层数据结构ArrayList是在底层维护了一个elementData数组,添加了自动扩容等功能,最终形成了一个动态数组。基本属性// 初始化大小private static final int DEFAULT_CAPACITY = 10;// 初始化一个空数组private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};// 底层存放数据的数组transient Object[] e原创 2020-06-11 20:57:58 · 176 阅读 · 0 评论 -
HashMap源码解读
HashMap源码解读底层数据结构HashMap是java对哈希表的一种实现,他保持了哈希表存储key-value键值对的特点,可以通过key快速获取value。他的插入过程大概分为以下几个步骤:开辟一个数组空间,当插入一个元素时,首先通过hashCode(key)这个方法获取一个hash值,假如是0,那么这个元素就被插入到上面图例中的0这个位置。假设再进来一个元素key1-va...原创 2020-04-13 01:32:18 · 121 阅读 · 0 评论 -
一段糟糕代码的演进之路
private void removeKeys(List<Map<String, String>> data, List<String> removeKeys) { for (Map<String, String> map : data) { for (String key : removeKeys) { ...原创 2019-06-30 19:58:18 · 107 阅读 · 0 评论