
JAVA容器
IdealSpring
为了面包和牛奶......
展开
-
1.Java.lang包之Object类
Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起。作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现。Object类没有定义属性,一共有13个方法,具体的类定义结构如下图:1.private static native void registerNatives() registerNatives...原创 2018-07-31 11:45:18 · 1598 阅读 · 0 评论 -
Collection容器家族(LinkedHashSet源码详解)
一、在Collection集合体系中的位置及概述 LinkedHashSet 是非同步的有序的,分别是插入顺序和访问顺序,LinkedHashSet的有序性可参考LinkedHashMap的有序性,继承于HashSet,内部基于LinkedHashMap实现的,也就是说LinkedHashSet和HashSet一样只存储一个值,LinkedHashSet和LinkedHashMa...原创 2018-11-08 11:58:55 · 211 阅读 · 0 评论 -
Collection容器家族(HashSet源码详解)
一、在Collection集合体系中的位置及概述 HashSet继承自AbstractSet抽象类,实现了Cloneable、Serializable接口,显示的实现了Set接口。至于为什么显示的实现Set接口,我前面的文章讲过。 HashSet而言,它是基于HashMap实现的,本质上讲HashSet底层实现是HashMap的封装类对象,HashSet的所有操作...原创 2018-11-07 21:37:37 · 282 阅读 · 0 评论 -
Map容器家族(TreeMap源码详解)
一、在Map集合家族的位置及概述 TreeMap是一个有序的key-value集合,它内部是通过红-黑树实现的。TreeMap继承与AbstractMap,实现了NavigableMap接口,意味着它支持一系列的导航方法,比如返回有序的key集合。它还实现了Cloneable接口,意味着它能被克隆。另外也实现了Serializable接口,表示它支持序列化。TreeMap是基...原创 2018-11-06 21:30:00 · 359 阅读 · 0 评论 -
Map容器家族(LinkedHashMap源码详解)
一、在Map集合家族的位置及描述 LinkedHashMap是HashMap的子类,底层数据结构是链表和哈希表并且线程不安全,链表保证了遍历的有序性(元素插入的顺序)、哈希表保证了键的唯一性。实现了Map接口,内部还维护了一个双向链表,在每次插入数据,或者访问、修改数据时,会增加节点、或调整链表的节点顺序。 ...原创 2018-10-31 20:46:49 · 273 阅读 · 0 评论 -
Map容器家族(HashMap源码详解)
一、在Map集合家族的位置及描述 HashMap子类继承自AbstractMap抽象类,实现了Map,Serializable,Cloneable接口,AbstractMap实现了Map接口的一部分方法,减轻了其子类的负担。 概括的说,HashMap底层存储元素的数据结构是散列(hash)也称为哈希表(数组+链表),哈希表的数据结构是数组和链表,数组在Has...原创 2018-10-02 14:48:37 · 481 阅读 · 0 评论 -
Collection容器家族(读完LinkedList源码---小测试:自定义具有LinkedList各项功能的实现类)
前面的几篇文章对LinkedList的超类和本身以及接口进行了讲解,为了更加深入理解LinkedList集合使用存储数据的思想,特意实现了一个自定义的MyLinkedList,源码如下:(如有错误,还望多多指教import java.util.Iterator;import java.util.NoSuchElementException;import java.util...原创 2018-09-10 12:59:07 · 215 阅读 · 0 评论 -
Map容器家族(AbstractMap源码详解)
一、在Map集合体系中的位置及概述 AbstractMap抽象类提供Map接口的骨干实现,以最大限度地减少实现此接口所需的工作量。二、成员变量 // 保存key transient Set<K> keySet; // 保存value transient Collection<V> values;...原创 2018-09-17 13:59:12 · 278 阅读 · 0 评论 -
Collection容器家族(AbstractSet源码详解)
一、在Collection集合体系中的位置及概述 AbstractSet抽象类属于Set集合分支的顶层类,它继承了AbstractCollection,实现了Set接口,先回顾一下Set接口,Set接口继承了Collection并没有进行扩展,AbstractCollection实现了Collection接口部分方法。 这个抽象类中没有定义抽象方法,有且只有...原创 2018-09-12 18:29:22 · 508 阅读 · 0 评论 -
Collection容器家族(读完List子类源码-总结篇)
面试题 List的子类特点: ArrayList: 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高。 Vector: 底层数据结构是数组,查询快,增删慢。 线程安全,效率低。 LinkedList: 底层数据结构是双向链表,查询慢,增删快。 线程不安全...原创 2018-09-12 15:45:18 · 248 阅读 · 0 评论 -
Collection容器家族(Vector讲解及Stack源码详解)
Vector讲解 Vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。 Vector的数据结构和ArrayList差不多,它包含了3个成员变量:elementData , ...原创 2018-09-12 15:35:55 · 399 阅读 · 0 评论 -
Map容器家族(Map接口源码详解)
一、在Map集合体系中的位置及概述 Map接口式是Map集合体系的顶层接口,它定义和规范了该集合体系的大体规范,所有子类该实现的方法。该体系是以键值对(key-value)对位元素进行存储。 描述: (1)映射(map)是一个存储键、键值对的对象,给定一个键,可以查询得到它的值,键和值都可以是对象。 (2)键必须是唯一的,值可以重...原创 2018-09-15 18:31:07 · 384 阅读 · 0 评论 -
Collection容器家族(LinkedList源码详解)
一、LinkedList在Collection集合体系中的位置 Linked:链表,List:线性表;加在一起,就能理解出LinkedList集合,底层是以链表为存储结构的集合,不过这个链表是双向链表。LinkedList是由AbstractSequentialList超类特化而来。AbstractSequentialList前面有讲过,他就是一个简洁的基于迭代的线性表,去除...原创 2018-09-09 17:47:12 · 261 阅读 · 0 评论 -
Collection容器家族(读完ArrayList源码---小测试:自定义具有ArrayList各项功能的实现类)
前面的几篇文章对ArrayList的超类和本身以及接口进行了讲解,为了更加深入理解ArrayList集合使用数组存储数据的思想,特意实现了一个自定义的MyArrayList,源码如下:/** * 自定义ArrayList集合 * @param <E> */public class MyArrayList<E> implements Iterab...原创 2018-08-24 14:11:57 · 206 阅读 · 0 评论 -
Collection容器家族(AbstractList超类和AbstractSequentialList超类)
AbstractList超类一、在Collection容器集合中的位置及作用 Collection集合体系有两大分支,一个是List分支、另一个是Set分支,Collection是这两大分支超类;这两个分支都由接口去约束,每个几口都有其实现类,而AbstractList抽象类就是List分支的顶层超类。此类提供了List接口的骨干实现,以最大限度地减少实现由“随机访问”数...原创 2018-08-20 14:49:43 · 828 阅读 · 2 评论 -
Collection容器家族(Iterable接口、Collection接口、List接口、Set接口)
一、什么是接口? 接口中定义的是该继承体系中的扩展功能。举个例子:(猫狗案例) 狗一般就是看门,猫一般就是作为宠物了。但是,现在有很多的驯养员或者是驯兽师,可以训练出:猫钻火圈,狗跳高,狗做计算等。而这些额外的动作,并不是所有猫或者狗一开始就具备的,这应该属于经过特殊的培训训练出来的。所以,这些额外的动作定义到动物类中就不合适,也不适合直接定义到猫或者狗中...原创 2018-08-17 14:10:11 · 1408 阅读 · 0 评论 -
Collection容器家族(ArrayList源码详解)
一.ArrayList在Colection集合体系中的位置及概述 ArrayList理解起来很简单,Array数组 阵列的意思、List线性表 列表,加在一起就是数组去实现线性表的一个实现类。ArrayList是由AbstractList超类特化而来。在功能上实现了add, get, set, remove等与存储结构相关的方法,我们重点理解这些功能。 Ar...原创 2018-08-22 10:54:59 · 260 阅读 · 0 评论 -
Collection容器家族(AbstractCollection超类)
一、AbstractCollection超类位置及概述 四个超类AbstractCollection、 AbstractSet 、AbstractList、AbstractSequentialList。AbstractCollection、 AbstractSet 、AbbstractList根据名字就可以知道,他们分别对Collection,Set、List接口进行了实现,但...原创 2018-08-18 21:40:56 · 387 阅读 · 0 评论 -
Collection容器家族(TreeSet源码详解)
一、在Collection集合体系中的位置及概述 TreeSet继承自AbstractSet抽象类,实现了NavigableSet、Serializable、Cloneable、RandomAccess接口。它的特点是存储元素唯一,无序(输入和输出无序)。 TreeSet默认情况下是基于TreeMap实现的,是对TreeMap的封装。默认情况下和TreeMap一样,采用元素的内...原创 2018-11-08 18:55:10 · 239 阅读 · 0 评论