1.1数据结构
Java提供了丰富的容器技术,这些容器技术在底层是经过各类各样的数据结构来实现。现实生活中的存储,咱们使用的是工具和建模。每种数据结构都有本身的优势和缺点,为了方便查询等一系列操做,引进算法概念,来帮助咱们在存储的数据中作到最快的插入,删除,查找等操做,常见的数据结构:堆栈、队列、数组、链表和红黑树等。node
1.2常见的数据结构:
1.2.1 栈(stack)
栈
是运算受限的线性表,其限制是仅容许在栈的一端进行插入和
删除操做,不容许在其它任何位置进行添加,查找,删除等操做。
- 先进后出:存进去的元素,要在后它后面的元素依次取出后,才能取出该元素
- 压栈:存元素,把元素存在栈的顶端位置
- 弹栈:取元素,把栈顶端元素取出
1.2.2 队列(queue)
队列:
同堆栈同样,也是一种运算受限的线性表,其限制是仅容许在
队列的一端进行插入,而在队列的另外一端进行删除。
1.2.3数组(Array)
数组:有序的元素序列,数组是在内存中开辟一段连续的空间,并在此空间存放元素。算法
- 查找元素快,经过索引,能够快速访问指定位置上的元素
- 增删元素慢:指定索引增长元素,须要建立一个新的数组,将指定的新元素存储在指定位置,把原数组中的元素根据索引,复制到数组对应的位置上,至关于从删除元素的索引开始,后一个索引内容覆盖前一个索引内容。
1.2.4 链表(Linked list)
链表:linked list 由一系列结点node(链表中的每个元素成为节点)组成,节点能够在运行时动态生成。每一个节点包括两部分:yige存储数据的数据域,另外一个是存储下一节点地址的指针域,咱们常说的链表结构有单向链表和双向链表,这里研究单向链表数组
- 多个节点之间,经过地址进行链接。
- 查找元素慢,想要查找某个元素,须要经过链接的节点,依次向后查找指定的元素
- 增删元素快:增长时,只须要修改链接下个元素的地址;删除时,只须要修改链接下个元素的地址便可
1.2.5红黑树(二叉树binary tree)
二叉树:每一个节点不超过2的有序树,存放的数据必须是可排序的数据结构
- 每一个节点最多有两个子节点
- 二叉树是每一个节点最多有两个节点的树结构,顶上叫根节点,两边叫左右子树