概述 本文是基于jdk8_271版本进行分析的。 Hashtable与HashMap一样,是一个存储key-value的双列集合。底层是基于数组+链表实现的,没有红黑树结构。Hashtable默认初始化容量为11,Hashtable也会动态扩容,与HashMap不同的是,每次扩容的容量是原容量2倍+ ...
分类:
编程语言 时间:
2021-06-02 10:43:44
阅读次数:
0
第18章 类集框架 18.1 Java类集框架 18.2 Colloection集合接口 18.3 List集合 18.4 Set集合 18.5 集合输出 18.6 Map集合 18.7 Stack栈 18.8 Queue队列 18.9 Properties属性操作 18.10 Collection ...
分类:
编程语言 时间:
2021-06-02 10:43:05
阅读次数:
0
1. HashMap的底层实现原理 HashMap的底层:数组+链表 (jdk7及之前) 数组+链表+红黑树 (jdk 8)HashMap的底层实现原理?以jdk7为例说明: HashMap map = new HashMap(): 在实例化以后,底层创建了长度是16的一维数组Entry[] tab ...
分类:
其他好文 时间:
2021-06-02 10:34:15
阅读次数:
0
题目:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 思路: 代码: 1 /** 2 * Definition fo ...
分类:
其他好文 时间:
2021-05-25 18:39:30
阅读次数:
0
一、什么是链表? 1.和数组一样,链表也是一种线性表。 2.从内存结构来看,链表的内存结构是不连续的内存空间,是将一组零散的内存块串联起来,从而进行数据存储的数据结构。 3.链表中的每一个内存块被称为节点Node。结点除了存储数据外,还需记录链上下一个结点的地址,即后继指针next。 二、为什么使用 ...
分类:
编程语言 时间:
2021-05-25 17:39:06
阅读次数:
0
题目: 思路:一道经典的快慢指针问题,快指针先走n步,然后一起走,快指针走到最后一个节点,慢指针就到了要被删除的节点的前一个节点。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, n ...
分类:
其他好文 时间:
2021-05-24 17:18:01
阅读次数:
0
HashMap底层为什么一定用数组 HashMap源码数据结构: Entry[] table = new Entry[capacity]; 其中,Entry就是一个链表节点。如果将数组替换成LinkedList是否可行?如下: List<Entry> table = new LinkedList<E ...
分类:
编程语言 时间:
2021-05-24 16:58:48
阅读次数:
0
题目:编写一个程序,找到两个单链表相交的起始节点。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 代码: 1 /** 2 * Definition for si ...
分类:
其他好文 时间:
2021-05-24 16:47:52
阅读次数:
0
二叉搜索里左子树的值都小于根节点的值,右子树的值都大于根节点的值,如果按从小到大顺序排的话,顺序是跟中序遍历一致的,首先想到的思路是对树进行中序遍历,用一个vector把每个节点都存起来,然后将每个节点双向连接起来,但显然并不是出题者想看到的方法。于是开始往递归的方向想,首先想到的是将根节点左边与左 ...
分类:
其他好文 时间:
2021-05-24 16:37:01
阅读次数:
0
我们维护一个有序单链表,越靠近链表尾部的结点是越早之前访问的。 当有一个新的数据被访问时,我们从链表头开始顺序遍历链表。 如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据对应的结点,并将其从原来的位置删除,然后再插入到链表的头部。 如果此数据没有在缓存链表中,又可以分为两种情况:如果此时缓存 ...
分类:
编程语言 时间:
2021-05-24 16:22:09
阅读次数:
0