|
|
|
|
发布时间:2008-05-24 13:19:17
浏览次数:133
类别:Java技术
|
|
上一讲说明了为什么要使用集合,这一进我们来具体看一看集合中的数据结构。Java中的集合按数据结构来分包括线性表、树、哈希表等,我们先来看看线性表。Java集合的线性表包括两种,即:
1、连续顺序存储结构
这种存储结构的典型代表是java.util.ArrayList。连续顺序存储结构跟数组是一样的,插入、删除操作效率低,并且是有边界的。那么,你有没有在使用ArrayList的时候发现它出现数组越界异常呢?好像没有,对吧。什么原因呢?原来,ArrayList在数组将要满时,会将原来的数组丢弃,然后再放大一倍左右创建一个新的数组,并将原来数组中的数据全部拷贝过去。试想一下,如果你有101个元素,假定ArrayList初始大小是100个,当你存入101个元素时,数组空间不足了,于是ArrayList就放大1倍空间,大概是200个左右,并将原来的100个元素复制过来。试想一下,为了存储101个元素,却使用了200个元素的空间,这是不是极大的浪费啊。所以,ArrayList一般存储元素数目确定,插入删除操作不频繁的元素。并且,如果你知道需要多少个元素时,一定要声明出来。它的优点也很明显,那就是节省存储空间。
2、链式存储结构
典型的链式存储结构的线性表是java.util.LinkedList。链表本身固有的特点决定了它存储元素的个数是不受限制的。但由于每一个结点不仅要存储当前元素的数据,还要存储下一个结点的位置,甚至上一个结点的位置,所以LinkedList比ArrayList占用的存储空间要多一些。但相对于因元素个数不确定而可能带来的浪费而言,这点浪费又是可接受的。此外,链表的插入和删除操作效率较高。所以,LinkedList一般用于存储个数不确定,或插入删除操作比较频繁的元素。LinkedList是双向循环链表。 |
|
| 在线咨询 |
武老师: |
代老师: |
| |
| 电话咨询 |
报名热线:010-62320869
|
| 电子邮件 |
Email:consult@sodii.com
|
|
|
|
| 乘车路线 |
| 1、乘坐47、386、836、753、740、983、656、944、运通109、运通113等,在学院桥东下车,路北白色大楼即是科群大厦; |
| 2、乘坐375、438、386、743、748、398、392等,到北航下车,向北步行200米至学院桥,学院桥东北角即是科群大厦; |
| 3、西站下车,可直接乘坐47路到学院桥东;北京站下车,坐2号线地铁至东直门,换乘375在北航下车 |
|
|