
Java容器
WYFVV
这个作者很懒,什么都没留下…
展开
-
Java集合——遍历Map对象
//第一种Map<Integer,Integer> map=new Hash<>();for(Map.Entry<Integer,Integer> entry:map.entrySet()){ System.out.println(entry.getKey()); System.out.println(entry.getValue());}//第二种for(Integer key:map.keySet()){}for(I.原创 2021-06-04 20:14:12 · 192 阅读 · 0 评论 -
容器——ConcurrentHashMap
1.底层数据结构和属性在之前学习容器的时候,学习的都是线程不安全的容器。现在来学习一个线程安全的容器:ConcurrentHashMap。JDK1.8之后,这个底层的数据结构就改变成了:数组+链表+红黑树(JDK1.7之前是由Segement组成的,Segment相当于一个HashMap。还要重要的属性://最大的容量private static final int MAXIMUM_CAPACITY = 1 << 30;//默认容量private static fina.原创 2020-11-08 17:09:44 · 293 阅读 · 0 评论 -
容器——LinkedHashMap
1.LinkedHashMap在之前学习的时候,迭代HashMap的顺序并不是放置的顺序,也就是无序的。为了有顺序的访问LinkedHashMap在底层为了双向链表,保证了元素迭代的顺序。该顺序可以是插入顺序和访问顺序。1.2 基本数据结构和属性 //双向链表的头指针 transient LinkedHashMap.Entry<K,V> head; //双向链表的尾指针 transient LinkedHashMap.Entry<K,V>原创 2020-11-04 19:09:51 · 194 阅读 · 0 评论 -
容器——扩容总结
ArrayList的扩容 (1)调用add方法为ArrayList添加一个元素,然后数组中的元素个数加一(size+1)。 (2) 调用方法需要得到最小扩容量,这个最小扩容量就是数组需要的最小的数组长度。如果ArrayList是使用无参构造的,没有确定长度。最小扩容量就是10和刚才元素个数中的最大值。如果是初始化过的,这个最小扩容量就是就是元素个数。 (3)得到最小扩容量后判断是否需要扩容,如果最小扩容量大于数组长度,就是说明数组长度是不够的,需要扩容。新容量为原...原创 2020-10-28 16:45:06 · 427 阅读 · 0 评论 -
容器-目录
容器解析集合框架 HashMap源码解析 ArrayList源码分析 Comparable和Comparator LinkedList源码分析 TreeMap源码解析原创 2020-02-12 18:32:55 · 301 阅读 · 0 评论 -
容器-HashMap源码解析
概述HashMap底层基于散列算法实现。HashMap允许null键和null值,在计算哈希键的哈希值拾,null键的哈希值为0。HashMap并不保证键值对的顺序,说明在进行某些操作后,键值对的顺序可能会发生改变。需要注意的是,HashMap是非线程安全类,在多线程环境下可能存在问题。HashMap特点:HashMap是基于哈希表的Map接口实现。 HashMap底层采用的是...原创 2019-10-13 21:32:24 · 240 阅读 · 0 评论 -
容器-TreeMap源码解析
概述首先我们知道TreeMap是基于红黑树实现的,下面对于红黑树进行介绍。红黑树(Red Black Tree)是一种自平衡二叉查找树,主要特征是在每个节点上增加一个属性来表示节点的颜色,可以是黑色,也可以是红色。红黑树就是在插入和删除元素时,通过特定的旋转来保持自身平衡的,从而获得较高的查找性能。红黑树保证从根节点到叶子节点的最长路径不超过最短路径的2倍,最坏的运行时间也是O(logn)...原创 2019-10-04 17:19:50 · 288 阅读 · 1 评论 -
容器-LinkedList源码分析
概述在之前的集合框架的文章中,知道了ArrayList和LinkedList是List接口的两种不同实现。也明白了ArrayList和LinkedList的区别。ArrayList和LinkedList的区别:1. 是否保证线程安全:ArrayList和LinkedList都是不同步的,也就是不保证线程安全;2. 底层数据结构:ArrayList底层使用的是Ob...原创 2019-09-28 16:49:59 · 190 阅读 · 0 评论 -
容器-Comparable和Comparator
概述Java常用的两个排序接口是Comparable和Comparator。Comparable表示可被排序的,实现该接口的类的对象自动拥有排序功能,可以看做是自己和自己比较。Comparator则表示一个比较器,实现了该接口的的类的对象是一个针对目标类的对象定义的比较器,一般情况,这个比较器将作为一个参数进行传递。ComparableComparable...原创 2019-09-27 16:45:44 · 244 阅读 · 0 评论 -
容器-ArrayList源码分析
ArrayList概述 ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。ArrayList源码分析1.ArrayList的继承和层次关系ArrayList的UML类图:...原创 2019-09-25 21:53:40 · 258 阅读 · 0 评论 -
容器-集合框架
在数学世界中,集合是指具有某种特性性质的事物汇成的集体,对应的英文是Set,它具有确定性,无序性,互异性等特点。而Java中的集合是用于存储对象的工具类容器,它实现了常用的数据结构,提供了一系列公开的方法用于增加,删除,修改,遍历和查找数据。框架图主要分为两类:第一类是按照单个元素存储的Collection;第二类是按照Key-Value存储的Map。Collection接口Col...原创 2019-09-25 14:14:40 · 259 阅读 · 0 评论