JAVA学习总结-经常使用数据结构

java中集合框架其实就是数据结构的实现的封装;前端

参考资料:任小龙教学视频java

 

1,什么是数据结构?算法

数据结构是计算机存储,组织数据的方式;后端

数据结构是指相互之间存在一种或多种特定关系的数据元素的集合;数组

一般状况下,精心选择的数据结构可带来更高的运行或者存储效率,数据结构

数据结构每每同高效的检索算法和索引技术有关;框架

 

2,数据结构的基本功能性能

增(Create)  删(Delete)   改(Update)  查(Read)spa

 

3,常见的数据结构视频

3.1,数组Array;

数组是最简单的数据结构;是用来存放同一种数据类型的集合.

从增删改查分析数组的性能:

增:在数组的最后一个位置添加元素是很方便的,可是要是想在第一个位置添加元素就很麻烦了,后面的全部元素都要总体后移,容量不够还要进行扩容;

删:把数组的最后一个元素删除是很方便的,可是要删除第一个位置的元素就很麻烦,后面的全部元素都要总体前移;

改:修改指定下标的元素只要操做一次便可;

查:若是查询指定下标的元素只要操做一次便可,若是查询指定元素的下标,此时须要使用线性搜索(挨个找),

综上:数组的改查性能比较高,增删性能比较低;

 

3.2链表Linked List; 

 链表是经过引用来表示上一个节点和下一个节点的关系;

   1》单点链表// 只能从头遍历到尾/只能从尾遍历到头

经过next存储下一个节点,Node next表示的就是下一个节点;

 

   2》双向列表// 既能够从头遍历到尾,也能从尾遍历到头

经过prev表示上一个节点,Node prev表示的是上一个节点;

 

从增删改查分析链表的性能:

增:双向链表能够直接获取第一个节点和最后一个节点.若是新增的元素在第一个位置或者最后一个位置,则操做只有一次;

删:把第一个元素或者最后一个元素删除只要操做一次;

改:不存在下标的概念,须要进行遍历;

查:不存在下标的概念,须要进行遍历;

综上:链表的增删性能较高,改查性能较低;

 

 

 

3.3栈Stack;

是一种运算受限的线性表,后进先出(LIFO);

仅容许在列表的一端添加和删除元素,这一端被称为栈顶,相对的把另外一端称为栈底

向一个栈中添加元素,又称为压栈或者进栈或者入栈,他是把新元素放在栈顶元素的上面,使之成为新的栈顶元素;

从一个栈删除元素,又称之为出栈,他是把栈顶元素删掉,使之相邻的元素成为栈顶元素;

栈是基于数组实现的,下标为0的元素就是栈底元素,最后一个元素就是栈顶元素;

 

3.4队列Queue;

队列是一种特殊的线性表,特殊之处在于,只容许表的前端进行删除操做,表的后端进行添加操做

和栈同样,队列是一种受限的线性表

进行插入操做的端称为队尾,进行删除操做的端称为队头;

单向队列:先进先出(FIFO)只能从队列尾插入数据,只能从队列头删除数据;

双向队列:既能够从队列尾/头插入数据,也能够从队列头/尾删除数据;

 

3.5哈希表Hash

在通常的数组中,元素在数组中的下标位置是随机的,元素的取值和元素的位置之间存在不肯定的关系;

所以数组在查找值时,须要把查找值和一系列的元素进行比较;此时的查询效率依赖于查找过程当中所进行的比较次数;

若是元素的值(value)和数组中的下标(index)有一个肯定的对应关系(hash),

公式:index = hash(value);

这样的数组就称之为哈希表,哈希表最大的用处就是提供查找数据的效率;

通常状况不会把哈希码(hashCode)做为数组元素的下标,由于哈希码较大,容易越界;能够在哈希码和下标之间作映射关系,

 

数组会记录元素的添加顺序,而且容许元素重复;

哈希表不会记录元素的添加顺序(哈希算法进行排序使之一一对应),不容许重复,缘由是:若是元素重复,致使哈希码值相等,致使下标相等

相关文章
相关标签/搜索