随笔分类 - Java容器
1
摘要:一、在Collection集合体系中的位置及概述 TreeSet继承自AbstractSet抽象类,实现了NavigableSet、Serializable、Cloneable、RandomAccess接口。它的特点是存储元素唯一,无序(输入和输出无序)。 TreeSet默认情况下是基于TreeMa
阅读全文
摘要:一、在Collection集合体系中的位置及概述 LinkedHashSet 是非同步的有序的,分别是插入顺序和访问顺序,LinkedHashSet的有序性可参考LinkedHashMap的有序性,继承于HashSet,内部基于LinkedHashMap实现的,也就是说LinkedHashSet和H
阅读全文
摘要:一、在Collection集合体系中的位置及概述 HashSet继承自AbstractSet抽象类,实现了Cloneable、Serializable接口,显示的实现了Set接口。至于为什么显示的实现Set接口,我前面的文章讲过。 HashSet而言,它是基于HashMap实现的,本质上讲HashS
阅读全文
摘要:一、在Map集合家族的位置及概述 TreeMap是一个有序的key-value集合,它内部是通过红-黑树实现的。TreeMap继承与AbstractMap,实现了NavigableMap接口,意味着它支持一系列的导航方法,比如返回有序的key集合。它还实现了Cloneable接口,意味着它能被克隆。
阅读全文
摘要:问题场景 在看TreeMap类是如何删除红黑树时,从remove方法看起,当看到deleteEntry(Entry<K,V> p)方法时: 就是图中标红的三行代码: p.key = s.key; p.value = s.value; p = s; 将后继节点的键赋值给待删除节点的键、将后继节点的值赋
阅读全文
摘要:一、在Map集合家族的位置及描述 LinkedHashMap是HashMap的子类,底层数据结构是链表和哈希表并且线程不安全,链表保证了遍历的有序性(元素插入的顺序)、哈希表保证了键的唯一性。实现了Map接口,内部还维护了一个双向链表,在每次插入数据,或者访问、修改数据时,会增加节点、或调整链表的节
阅读全文
摘要:一、在Map集合家族的位置及描述 HashMap子类继承自AbstractMap抽象类,实现了Map,Serializable,Cloneable接口,AbstractMap实现了Map接口的一部分方法,减轻了其子类的负担。 概括的说,HashMap底层存储元素的数据结构是散列(hash)也称为哈希
阅读全文
摘要:一、在Map集合体系中的位置及概述 AbstractMap抽象类提供Map接口的骨干实现,以最大限度地减少实现此接口所需的工作量。 二、成员变量 // 保存key transient Set<K> keySet; // 保存value transient Collection<V> values;
阅读全文
摘要:一、在Map集合体系中的位置及概述 Map接口式是Map集合体系的顶层接口,它定义和规范了该集合体系的大体规范,所有子类该实现的方法。该体系是以键值对(key-value)对位元素进行存储。 描述: (1)映射(map)是一个存储键、键值对的对象,给定一个键,可以查询得到它的值,键和值都可以是对象。
阅读全文
摘要:一、在Collection集合体系中的位置及概述 AbstractSet抽象类属于Set集合分支的顶层类,它继承了AbstractCollection,实现了Set接口,先回顾一下Set接口,Set接口继承了Collection并没有进行扩展,AbstractCollection实现了Collect
阅读全文
摘要:面试题 List的子类特点: ArrayList: 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高。 Vector: 底层数据结构是数组,查询快,增删慢。 线程安全,效率低。 LinkedList: 底层数据结构是双向链表,查询慢,增删快。 线程不安全,效率高。
阅读全文
摘要:Vector讲解 Vector类称作向量类,它实现了动态数组,用于元素数量变化的对象数组。像数组一样,vector类也用从0开始的下标表示元素的位置;但和数组不同的是,当vector对象创建后,数组的元素个数会随着vector对象元素个数的增大和缩小而自动变化。 Vector的数据结构和ArrayL
阅读全文
摘要:前面的几篇文章对LinkedList的超类和本身以及接口进行了讲解,为了更加深入理解LinkedList集合使用存储数据的思想,特意实现了一个自定义的MyLinkedList,源码如下:(如有错误,还望多多指教 import java.util.Iterator; import java.util.
阅读全文
摘要:一、LinkedList在Collection集合体系中的位置 Linked:链表,List:线性表;加在一起,就能理解出LinkedList集合,底层是以链表为存储结构的集合,不过这个链表是双向链表。LinkedList是由AbstractSequentialList超类特化而来。Abstract
阅读全文
摘要:前面的几篇文章对ArrayList的超类和本身以及接口进行了讲解,为了更加深入理解ArrayList集合使用数组存储数据的思想,特意实现了一个自定义的MyArrayList,源码如下: /** * 自定义ArrayList集合 * @param <E> */ public class MyArray
阅读全文
摘要:问题场景: 在看完ArrayList类源码的时候决定自己实现了ArrayList集合,经过一番折腾后,整体要实现的功能都已确定。用数组存储数据和数组的动态扩容都已写好。由于自己实现ArrayList只是为了领会一下其核心是想,所有就实现了一个无参构造,对存储数据的数组进行了初始化。 但是无意间发现自
阅读全文
摘要:一.ArrayList在Colection集合体系中的位置及概述 ArrayList理解起来很简单,Array数组 阵列的意思、List线性表 列表,加在一起就是数组去实现线性表的一个实现类。ArrayList是由AbstractList超类特化而来。在功能上实现了add, get, set, re
阅读全文
摘要:AbstractList超类 一、在Collection容器集合中的位置及作用 Collection集合体系有两大分支,一个是List分支、另一个是Set分支,Collection是这两大分支超类;这两个分支都由接口去约束,每个几口都有其实现类,而AbstractList抽象类就是List分支的顶层
阅读全文
摘要:一、AbstractCollection超类位置及概述 四个超类AbstractCollection、 AbstractSet 、AbstractList、AbstractSequentialList。AbstractCollection、 AbstractSet 、AbbstractList根据名
阅读全文
摘要:一、什么是接口? 接口中定义的是该继承体系中的扩展功能。 举个例子:(猫狗案例) 狗一般就是看门,猫一般就是作为宠物了。但是,现在有很多的驯养员或者是驯兽师,可以训练出:猫钻火圈,狗跳高,狗做计算等。而这些额外的动作,并不是所有猫或者狗一开始就具备的,这应该属于经过特殊的培训训练出来的。所以,这些额
阅读全文
1

浙公网安备 33010602011771号