综合前面的介绍和实例代码,我们可以知道,如果涉及到堆栈、队列等操作,应该考虑用 List。对于需要快速插入、删除元素等操作,应该使用 LinkedList。如果需要快速随机访问元素,应该使用 ArrayList。如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高。如果多个线程可能同时操作一个类,应该使用同步的类。要特别注意对哈希表的操作,作为 Key 的对象要正确复写 Equals 和 HashCode 方法。尽量返回接口而非实际的类型,如返回 List 而非 ArrayLis...
分类:
编程语言 时间:
2016-05-23 15:14:20
阅读次数:
164
平衡树可以维护带插入删除的序列操作,加上一些线段树的特性即可像线段树一样维护区间信息 同样,线段树可以维护区间信息,加上一些平衡树的特性也就可以实现插入删除 不知为何似乎没见过什么相关资料所以就自己yy了一下 考虑旋转: 可以发现每次旋转只需更新一个区间的信息 定义每个节点的size为子树中叶节点个 ...
分类:
其他好文 时间:
2016-05-21 21:48:47
阅读次数:
159
不定长数组 维护一个序列 在末尾插入/删除均摊O(1) 任意位置插入O(n) 指定位置查询/修改O(1) 空间O(n) 链表 维护一个序列 定位到第i个位置O(n) 在任意位置(已定位到该位置)插入/删除/修改O(1) 空间O(n) 散列表 维护键-值对应关系或维护键的存在性 1.开放寻址法散列表 ...
分类:
其他好文 时间:
2016-05-21 19:05:05
阅读次数:
465
二叉查找树是个好东西,他让查找,插入,删除,这些常用操作变得高效,但是,他是存在问题的,那就是,在坏的输入序列下,树会退化成链表,这就很尴尬了,于是为了避免这种情况的发生,我们需要一种数据结构,可以自动对树进行调整,我们希望树尽量平衡,于是我们使用平衡因子作为指标,保持任意节点左右子树深度差不超过1 ...
分类:
编程语言 时间:
2016-05-21 06:36:33
阅读次数:
274
通过SQL Server建库语句等,采用纯代码方式创建数据库,创建数据表,以及进行相应数据库操作,包括检索,插入,删除,修改。以一个例题掌握数据库常用操作。...
分类:
数据库 时间:
2016-05-20 19:51:08
阅读次数:
262
初识HashMap 之前的List,讲了ArrayList、LinkedList,最后讲到了CopyOnWriteArrayList,就前两者而言,反映的是两种思想: (1)ArrayList以数组形式实现,顺序插入、查找快,插入、删除较慢 (2)LinkedList以链表形式实现,顺序插入、查找较 ...
分类:
其他好文 时间:
2016-05-20 17:20:16
阅读次数:
215
HDU 5687 Problem Description 度熊手上有一本神奇的字典,你可以在它里面做如下三个操作: 1、insert : 往神奇字典中插入一个单词 2、delete: 在神奇字典中删除所有前缀等于给定字符串的单词 3、search: 查询是否在神奇字典中有一个字符串的前缀等于给定的字 ...
分类:
其他好文 时间:
2016-05-20 17:13:01
阅读次数:
176
链表概述
链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,...
分类:
其他好文 时间:
2016-05-19 17:47:59
阅读次数:
281
题目链接:点击打开链接
思路:treap树模板题, 可以动态维护一个有序表, 支持在O(logN)的时间内完成插入、删除一个元素和查找第K大元素的任务。 当然, treap树能做到的还远远不止这些, 常常与其他数据结构嵌套。
treap树是一种平衡二叉搜索树, 既满足堆的条件, 又满足排序二叉树的条件。
细节参见代码:
#include
#include
#include
#incl...
分类:
其他好文 时间:
2016-05-18 19:48:06
阅读次数:
161
本解析源码来自JDK1.7
LinkedList许多方法是为了适配其实现的接口,本质上都是双向链表的操作LinkedList概要
基于双向链表,主要实现了List和Deque接口,Deque接口继承自Queue,所以LinkedList同时实现了Queue接口
由于其基于双向链表,操作需要操作连接指针数数较多,所以线性操作系数比ArrayList较大
插入删除快,随机访问慢
线程不安全,修改列表结...
分类:
其他好文 时间:
2016-05-18 18:23:00
阅读次数:
172