<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cccooode的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cccooode</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cccooode]]></copyright><item><title><![CDATA[ArrayList底层源码及线程安全问题分析]]></title><link>https://blog.youkuaiyun.com/cccooode/article/details/122683475</link><guid>https://blog.youkuaiyun.com/cccooode/article/details/122683475</guid><author>cccooode</author><pubDate>Tue, 25 Jan 2022 13:26:44 +0800</pubDate><description><![CDATA[ArrayList

一、简介

ArrayList 的底层是数组队列，相当于动态数组。与 Java 中的数组相比，它的容量能动态增长。在添加大量元素前，应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。



二、ArraList核心源码


private static final long serialVersionUID = 8683452581122892189L;
​
  /**
   * 默认初始化容量 DEF...]]></description><category></category></item><item><title><![CDATA[ArrayList底层源码及线程安全问题分析]]></title><link>https://blog.youkuaiyun.com/cccooode/article/details/122683395</link><guid>https://blog.youkuaiyun.com/cccooode/article/details/122683395</guid><author>cccooode</author><pubDate>Tue, 25 Jan 2022 13:22:16 +0800</pubDate><description><![CDATA[ArrayList

一、简介

ArrayList 的底层是数组队列，相当于动态数组。与 Java 中的数组相比，它的容量能动态增长。在添加大量元素前，应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。



二、ArraList核心源码


private static final long serialVersionUID = 8683452581122892189L;
​
  /**
   * 默认初始化容量 DEF...]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap底层数据结构与源码]]></title><link>https://blog.youkuaiyun.com/cccooode/article/details/122683360</link><guid>https://blog.youkuaiyun.com/cccooode/article/details/122683360</guid><author>cccooode</author><pubDate>Tue, 25 Jan 2022 13:15:48 +0800</pubDate><description><![CDATA[一、存储结构

ConcurrentHashMap中的阈值与HashMap中相同







可以发现 Java8 的 ConcurrentHashMap 相对于 Java7 来说变化比较大，不再是之前的 Segment 数组 +

HashEntry 数组 + 链表，而是 Node 数组 + 链表/红黑树。当冲突链表达到一定长度时，链表会转换成红黑树。

ConcurrentHashMap在结构上和 Java8 的 HashMap 基本上一样，不过它保证了线程安全性。



二、源码分析

初始化函数.]]></description><category></category></item><item><title><![CDATA[LinkedHashMap和TreeMap在遍历数据时的区别]]></title><link>https://blog.youkuaiyun.com/cccooode/article/details/122682595</link><guid>https://blog.youkuaiyun.com/cccooode/article/details/122682595</guid><author>cccooode</author><pubDate>Tue, 25 Jan 2022 12:37:15 +0800</pubDate><description><![CDATA[话不多说，直接上代码：

示例：



LinkedHashMap输出结果：





TreeMap输出结果：







由上述代码及结果可知：

LinkedHashMap是根据插入数据的顺序遍历

TreeMap是根据1.2.3....的顺序遍历出结果




























...]]></description><category></category></item><item><title><![CDATA[HashMap底层源码与数据结构分析(JDK1.8)]]></title><link>https://blog.youkuaiyun.com/cccooode/article/details/122682255</link><guid>https://blog.youkuaiyun.com/cccooode/article/details/122682255</guid><author>cccooode</author><pubDate>Tue, 25 Jan 2022 11:50:07 +0800</pubDate><description><![CDATA[一、简介


JDK1.8中HashMap采用的是数组+链表结构+红黑树保存所有数据


HashMap主要用于存放键值对，它基于哈希表的Map接口实现，是常用的 Java 集合之一，是非线程安全的。

HashMap可以存储null的key和value，但是null作为键只能有一个，null作为值可以有很多个。

JDK1.8之前HashMap由数组 + 链表构成，数组是HashMap的主体，链表则是主要为了解决哈希冲突而存在的（"拉链法"解决冲突）。JDK1.8以后的HashMap在解决哈希冲突时有了较]]></description><category></category></item></channel></rss>