- 博客(17)
- 收藏
- 关注
原创 简单分析一下集合中LinkedHashMap 、weakHashMap 、TreeMap 、HashSet、LinkedHashSet、treeSet的特点
1.LinkedHashMap的特点 (1)LinkedHashMap继承了HashMap ,是基于HashMap和双向链表来实现的。 实现了Clonable ,serialiable(可序列化),map接口; public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> ...
2019-11-13 14:47:21
246
原创 HashTable的源码分析JDK1.7
对于hashtable部分,主要分析JDK1.7版本的 (1)继承关系 public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable { 继承了Dictionary,实现了Map、Clonea...
2019-11-13 14:20:59
176
原创 HashMap总结
1.定义 基于哈希表Map接口实现类 继承了AbstractMap抽象类 实现了Map接口:拥有一组Map通用的操作 实现了Cloneable接口:可进行拷贝:HashMap实现的是浅层拷贝(即拷贝对象的改变会影响被拷贝的对象) 实现了Serializable接口:表示可实现序列化,可将HashMap对象保存至本地,之后可恢复状态 特点:允许键/值 为空对象(null) 非线程安全:可...
2019-11-13 14:06:55
354
原创 hashMap源码分析JDK1.7
在分析完HashMapJDK1.8之后,今天依然从以下几个方面分析JDK1.7版本的HashMap的底层源码实现,虽然JDK1.7版本下又分几个不同的版本,但都大同小异。 继承结构、基本属性、默认值、构造函数、扩容机制、CRUD操作 1.继承结构分析 public class HashMap<K,V> extends AbstractMap<K,V> ...
2019-11-13 13:57:08
180
原创 hashMap源码分析jdk1.8
本文主要从以下几个方面分析一下HashMap源码,算是对最近学习的HashMap的一个小小总结,看完JDK1.8版本的后,还会去看一下JDK1.7版本的,下面主要是基于JDK1.8版本。 1.继承关系 2.基本属性和默认值 3.构造函数 4.基本的CURD实现 在进行源码分析之前,先来说一下HashMap的底层数据结构: HashMap就是使用哈希表来存储的,HashMap底层由数组+链...
2019-11-06 10:00:59
448
转载 三次握手和四次挥手详解
https://blog.csdn.net/hyg0811/article/details/102366854
2019-11-06 09:32:10
112
原创 Arraylist和LinkedList的异同点
相同点: 数据特征相同:类中数据可重复,插入有序,可以有多个null值 继承关系相同:均直接或间接继承了AbstractList类,并实现了List接口 遍历:都能使用ListIterator迭代器 不同点: 底层数据结构不同:ArrayList底层数据结构是数组,LinkedList底层数据结构是双向链表。 扩容不同:LinkedList不需要扩容,ArrayList需要考虑扩容。 ...
2019-10-29 17:40:34
333
原创 LinkedList的源码实现
主要从以下几个方面分析LinkedList的底层源码实现 1.继承关系 2.基本属性和默认值 3.构造函数 4.基本的CRUD实现 5.增长方式 1、继承关系 实现了List接口,还实现了Deque接口,Deque是双向队列、可以实现克隆、可以实现序列化 所以LinkedList具有特有的方法头尾添加、头尾获取、头尾删除等等 2、基本属性和默认值 表示集合中元素的个数 transient ...
2019-10-29 17:34:50
711
原创 Java中length,length(),size()的区别
1、length是属性,数组的属性:用于获取数组长度。 public static void main(String[] args) { int[] intArray = {1,2,3}; System.out.println("这个数组的长度为:" + intArray.length);//数组长度为3 } 2、length()是字符串String的一个方法:用于获取字符串长度。 ...
2019-10-23 10:35:46
549
原创 单链表逆置
思路:顺着头结点往尾结点遍历,遍历期间把每个结点的nextNode替换掉, 替换过程需要注意临时存储下一个节点。 代码实现: public class Link<T extends Comparable<T>> { private Entry<T> headEntry; private Entry<T> tailEntry;//...
2019-10-06 17:11:56
165
原创 用两个栈实现一个队列&用两个队列实现一个栈
1、思路 用两个栈实现一个队列&用两个队列实现一个栈 a.区别和联系 相同点:(1)栈和队列都是控制访问点的线性表; (2)栈和队列都是允许在端点处进行数据的插入和删除的数据结构; 不同点:(1)栈遵循“后进先出(LIFO)”的原则,即只能在该线性表的一头进行数据的插入和删除,该位置称为“栈顶”,而另外一头称为“栈底”;根据该特性,实现栈时用顺序表比较...
2019-09-27 14:45:01
261
原创 两个链表有序,将两个有序单链表合并成一个有序单链表。
思路: 1、分析从合并两个链表的头结点开始。比较两个链表头结点的值,较小头结点链表将是合并后链表的头结点。 2、继续合并两个链表中剩余的结点。在两个链表中剩下的结点依然是排序的,因此合并这两个链表的步骤和前面的步骤是一样的。我们还是比较两个头结点的值。 3、当我们得到两个链表中值较小的头结点并把它链接到已经合并的链表之后,两个链表剩余的结点依然是排序的,因此合并的步骤和之前的步骤是一样的。 ...
2019-09-19 15:50:29
4139
原创 判断单链表是否有环,若有环输出环的入口节点
思路: 1、快慢引用 fast 一次跑两个,slow一次跑一个两者相遇有环,但相遇点不一定是入口点,如何证明是不是入口点? 快路径长度=2慢路径长度 2、代码实现 public class Link<T extends Comparable<T>> { private Entry<T> headEntry; private Entry&...
2019-09-19 15:24:18
168
原创 输出链表中的倒数第二个结点
思路: 方法一:设p,q 方法二:算出总数,去减 代码实现 public class Link<T extends Comparable<T>> { private Entry<T> headEntry; private Entry<T> tailEntry;//标记尾部 public Entry<T> ...
2019-09-19 14:51:16
720
原创 假设两个单链表,已经相交,输出相交节点value。
思路: 计算链表长度,先让p走差值步,然后两个同时往后步,走到地址相同,则找到。 代码实现 public class Link<T extends Comparable<T>> { private Entry<T> headEntry; private Entry<T> tailEntry;//标记尾部 public...
2019-09-19 14:45:30
172
原创 泛型单链表
public class Link<T extends Comparable<T>> { private Entry<T> headEntry; private Entry<T> tailEntry;//标记尾部 public Entry<T> getEntry(T value){ for(En...
2019-09-18 10:00:01
136
原创 单链表的头增头删尾增尾删
一、单链表的基本介绍 链表是一种数据结构,和数组同级,链表在进行循环遍历时效率不高,但是在插入和删除时优势明显。 单向链表是一种线性表,是有有结点(Node)组成的,逻辑上是线性的,物理存储上不一定,每个结点只能也只有知道下一个结点的存储位置,向外暴露的只有一个头结点(head),对链表的所有操作都是直接或者间接地通过头结点来实现的。 结点有两部分组成:value,next 单链表分为两种...
2019-09-18 09:48:46
800
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人