1. ArrayList 情况一:不指定容量,默认大小是十个数组的大小。在创建的时候不会分配十个数组,在第一次add 元素的时候才会进行扩容至默认的十个大小。 接下来容量超出的时候扩容机制如下: 比如放第11个的时候: add 源码如下: java.util.ArrayList#add(E) pub
原创
2021-07-14 17:06:48
136阅读
应用领域 API网关 incubator-shenyu(原soul) https://github.com/apache/incubator-shenyu https://github.com/zhaoyb/soul 简介 服务保护 sentinel https://github.com/aliba ...
转载
2021-08-29 00:27:00
144阅读
2评论
# Java源码集合
Java是一种非常流行的编程语言,广泛应用于各种软件开发领域。在Java中,集合是一种非常重要的数据结构,用于存储和操作一组对象。Java提供了丰富的集合框架,包括List、Set、Map等不同类型的集合类。这些集合类提供了各种方法来操作和处理集合中的元素。
## 集合框架的概述
Java集合框架(Collection Framework)是Java提供的用于存储和操作
原创
2023-08-04 07:09:30
51阅读
Map源码
原创
2023-08-23 16:26:45
72阅读
# Java集合源码解析
Java集合是用于存储和操作数据的工具,是开发中常用的数据结构和算法之一。在Java中,集合框架提供了一组接口和类,用于存储和操作不同类型的数据。本文将对Java集合的源码进行解析,并介绍常用的集合类及其使用方法。
## 1. 集合框架概述
Java集合框架是Java编程语言的一部分,它提供了一组接口和类,用于存储和操作数据。集合框架主要包括以下几个组件:
- 接
原创
2023-08-09 07:15:35
38阅读
我们查看Collection接口的hierarchy时候,可以看到AbstractCollection<E>这样一个抽象类,它实现了Collection接口的部分方法,Collection集合系列的各个集合类都继承于该抽象类。我们来看看这个类: public abstract class AbstractCollection<E> implements Collect
对于java的集合类,首先看张图 这张图大致描绘出了java集合类的总览,两个体系,一个Collection集合体系一个Map集合体系。在说集合类之前,先说说Iterable这个接口,这个接口在jdk1.8之前,里面只有一个方法Iterator<T> iterator(),即返回一个T类型的迭代器,在1.8增加了两个default修饰的方法default void forE
转载
2023-07-20 17:12:46
41阅读
最近在整理JAVA 基础知识,从jdk源码入手,今天就jdk中 java.util包下集合类进行理解先看图从类图结构可以了解 java.util包下的2个大类: 1、Collecton:可以理解为主要存放的是单个对象 2、Map:可以理解为主要存储key-value类型的对象一、Collection Collection继承了Iterate接口,Iterate用于集合内迭代器抽象接口,其子类
转载
2023-08-01 17:46:23
34阅读
在JDK1.5之前,Java有两种方式定义新类型: 类和接口。 对于大部分面向对象编程来说,这两种方法看起来似乎足够了。但是当我们需要限定某个类型只能出现特点的值的时候,我们就需要做很多工作来完成这种限定,而且还有可能以为设计问题而导致无法完美的作出限制或限制过度是某些应有的功能无法完成。为此,sun公司在jdk1.5是增了Enum来解决这个问题。下面我们看一下Enum的源码: package j
转载
2023-09-01 11:37:22
25阅读
List,Set,Map都是接口,前两个继承Collection接口,Map为独立接口Set的实现由HashSet,LinkedHashSet,TreeSetList下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,HashMap,TreeMapCollection还有Queue接口,实现有PriorityQueueArrayLis
原创
2019-09-03 17:38:36
1062阅读
关于有序集合的实现,从 zaddGenericCommand函数说起: 从代码中我们发现有序集合在存储时似乎使用了两种方案:一种Zset,另一种是zsetlistpack。主要是根据zset_max_listpack_entries和zset_max_listpack_value来判断。这两个字段什 ...
转载
2021-10-15 16:35:00
253阅读
2评论
No1: ArrayList的扩容策略是,新容量扩大为原来的1.5倍。 ArrayList不是线性安全的,因为没有使用synchronized关键字,但是优点是效率提高了。与之相比,Vector是线性安全的。 ArrayList解决线程不安全的办法就是使用synchronized关键字,哈哈哈 No
转载
2017-12-25 14:20:00
44阅读
2评论
通常我们把Redis Set结构称为无序集合,这在一定程度上是有道理的。为什么是一定程度上呢,因为通过源码的实现过程我们发现了一些小细节。从sadd命令开始入手: sadd先按照redis的一贯套路 检查key是否存在,不存在就创建,存在就直接添加值。只是在sadd在创建key的时候它动了一点小心思 ...
转载
2021-10-15 14:20:00
318阅读
2评论
List和set集合:交集、差集、合集的区别retainAll,removeAll、addAll这个博客中,有朋友说集合的removeAll结果是错的,在这里分析一下源码,会更清晰。
原创
2022-03-14 11:14:53
67阅读
目录集合简介迭代器Iterable接口Iterator 接口Collection接口List体系体系结构List接口ArrayList源码解析Map体系体系结构Map接口HashMap源码分析HashMap的常见问题hashCode()、equals()Set体系体系结构常见实现类集合遍历集合工具类 Collections数组、list的相互转换使用集合的注意点 jdk源码版本1.8。体系结构图只列出了常见的接口、类,白色的是接口,黄色的类(包括抽象类)。 集合简介集合用于存
原创
2021-11-04 11:27:19
179阅读
点赞
List和set集合:交集、差集、合集的区别retainAll,removeAll、addAll这个博客中,有朋友说集合的removeAll结果是错的,在这里分析一下源码,会更清晰。
原创
2021-07-12 10:57:02
134阅读
# Java集合源码分析
作为一名经验丰富的开发者,你将通过以下步骤教会刚入行的小白如何进行Java集合源码分析。首先我们来看一下整个过程的流程图:
```flow
st=>start: 开始
op1=>operation: 选择一个Java集合类
op2=>operation: 查找该集合类的源码
op3=>operation: 打开源码文件
op4=>operation: 分析源码
op5
原创
2023-08-09 07:16:14
43阅读
前言 前面分析了ArrayList和LinkedList的实现,分别是基于数组和双向链表的List实现。但看之前那张图,还有两个实现类,一个是Vector,另一个是Stack,接下里一起走进它们的源码世界吧!4. VectorVector跟ArrayList比较相似,继承实现的类或者接口也都是一样的,都是继承自AbstractList,同时底层也是基于数组来实现的。public class Ve
转载
2023-08-20 12:34:49
32阅读
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。Java集合类的整体框架如下:从上图中可以看出,集合类主要分为两大类:C...
转载
2021-08-24 15:07:09
263阅读
主要UML流程如下图: 一、创建组件库第一步: 创建组件库及索引库,参考组件创建第二步:组件库目录说明,以MJExceptionReportKit库为例: MJExceptionReportKit:组件库项目podspec:组件配置文件Example:示例项目MJExceptionReportKit:组件相关内容文件夹 -Assets:资源文件夹 -Classe