准备花一段时间search一下数据结构的知识,先做一下准备工作,将每种数据结构的优缺点列出如下:
数据结构 | 优点 | 缺点 |
数组 | 插入块,如果知道元素的下标,获取元素的值也很快 | 查找慢,删除慢,大小固定。如果要更改大小,需要重新获取空间。 |
有序数组 | 比无须数组查找快 | 删除和插入慢,大小固定 |
栈 | 提供后进先出的存储方式 | 获取非顶层的数据元素慢 |
队列 | 提供后进后出的存储方式 | 获取非队列头部的数据元素慢 |
链表 | 插入和删除数据快,可以随意的更改大小 | 查找数据慢 |
二叉数 | 查询、删除、插入速度都较快(如果树保持平衡) | 删除算法复杂 |
红-黑树 | 查询、删除、插入数据都快,树总是平衡的 | 算法复杂 |
2-3-4树 | 查询、删除、插入数据都快,树总是平衡的 | 算法复杂 |
哈希表 | 如果关键字已知,那么存取极快。插入快。 | 删除慢,如果关键字未知,那么存取慢。空间利用不充分。 |
堆 | 插入删除极快,对最大数据项的存取也极快。 | 对其他非最大数据项的数据存取慢。 |
图 | 能够对现实世界建模 | 有些算法复杂而且速度慢 |
java中的基本数据类型的取值范围如下:
名称 | 大小(以位计算) | 取值范围 |
boolean | 1 | true or false |
byte | 8 | -128~+127 |
char | 16 | \u0000~\uffff, 即0~65535 |
short | 16 | -32768~+32767 |
int | 32 | -2147483648~+2147483647 |
long | 64 | -9223372036854775808~+9223372036854775807 |
float | 32 | 约10-38~10+38,有效数字7位 |
double | 64 | 约10-308~10+308,有效数字15位 |