一、简介 已经了解过了BlockingQueue阻塞队列,这一篇就直接开始入主题LinkedBlockingQueue,这是一个链表实现的有界阻塞队列,同样按照先进先出FIFO原则存取元素,其吞吐量高于之前学习的ArrayBlockingQueue。 二、Demo和学习 因为LinkedBlocki ...
分类:
数据库 时间:
2018-08-03 14:28:01
阅读次数:
456
需要实现的方法 1.构造函数 堆中为头结点m_pList申请内存 m_pList数据域置为0 指向地址为空,事实上这里声明了一个头结点,头结点没有后继结点并且数据域为空 长度置为0 2.析构函数 调用清空链表方法 删除头结点并置空 3.清空链表 声明一个Node*类型的指针指向m_pList的下一个 ...
分类:
编程语言 时间:
2018-08-02 02:01:18
阅读次数:
206
[TOC] HashMap概述 前面我们分析了基于数组实现的ArrayList和基于双向链表实现的LinkedList,它们各有优缺点:ArrayList查找元素快但是插入删除元素慢,LinkedList插入删除元素快但是查找元素慢。那么有没有一种数据对象能够做到高效的查询和 ...
分类:
其他好文 时间:
2018-07-28 11:51:14
阅读次数:
148
HashMap 的实现原理 HashMap 概述 HashMap 是基于哈希表的 Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get ...
分类:
编程语言 时间:
2018-07-27 17:02:33
阅读次数:
192
上面用单链表实现队列,这里用数组实现队列:需要两个指针:head和tailhead=0,tail=0 两个指针默认是0,都指向数组的首部PUSH操作:每当push的时候,只要将head当前指向的位置赋新值,使head前移就可以如图,实现数组的push操作:push 0 的时候,将head当前指向的赋为0,将head前移push 1 的时候,将head当前指向的赋为1,将head前移...POP操作
分类:
其他好文 时间:
2018-07-26 18:47:06
阅读次数:
139
队列队列和常说的排队差不多,先来的人先走,后面来的人接着走,最后来的人最后走结构:FIFO栈和队列是相反的,先进后出,后进先出的结构队列不是凭空实现的一个结构,还要用之前已经实现过的数据结构来实现之前学习的结构: array,list,linkedlist,dll2. 实现队列的ADT需要有两个基本操作:push(入队)pop(出队)用列表实现:比如说
分类:
其他好文 时间:
2018-07-26 18:24:04
阅读次数:
161
这篇文章主要说清楚HashMap底层数据结构,以及底层数组大小为什么是2的整数次幂。 注:该源码基于JDK8 1、HashMap 数据结构? HashMap 底层数组结构刚开始是数组+链表实现,但是当链表上的节点多余一定值(8)的时候,将链表换成红黑树。 2、我们从 put(K key, V val ...
分类:
其他好文 时间:
2018-07-24 19:14:20
阅读次数:
130
java.util.concurrent包下的新类。 就是其中之一,是一个阻塞的线程安全的队列,底层采用链表实现。 LinkedBlockingQueue 构造的时候若没有指定大小,则默认大小为 ,当然也可以在 构造函数的参数中指定大小 ...
分类:
数据库 时间:
2018-07-16 20:29:13
阅读次数:
154
关于集合 Collection 存出一组相同数据类型的集合 List 存储的是唯一的,无序的数据 ArrayList 数组 ArrayList实现了随机访问的接口 便于查询, 总结: ArrayList是基于数据实现的list,而LinkedList是基于链表实现的list。所以,ArrayList ...
分类:
其他好文 时间:
2018-07-12 13:33:02
阅读次数:
164
1:hashMap的实现原理 1.1 hsahMap在jdk1.8的时候做了一个改进,在jdk1.7的时候hahsMap是基于哈希表(数组+链表)实现的,在1.8之后又加了一个叫二叉树的一个实现,在二叉树里边用了一个叫红黑树,红黑树是二叉树里边的一种,它主要是用来保证树的平衡性,因为二叉树有的时候节 ...
分类:
其他好文 时间:
2018-07-10 00:38:09
阅读次数:
330