List接口的特点: 存取有序,有索引值,元素可重复
a:它是一个元素存取有序的集合。
例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的(就是说怎么存入怎么输出)。
b:它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。
c:集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
d:List接口的常用子类有:
ArrayList集合 LinkedList集合 Verctor集合
数据的存储结构
a:栈结构:后进先出/先进后出(手枪弹夹) FILO (first in last out) 羽毛球筒
b:队列结构:先进先出/后进后出(银行排队) FIFO(first in first out) 单行道,且不能超车!
c:数组结构: 查询快 增删慢
查询快:通过索引快速找到元素
增删慢:每次增删都需要开辟新的数组,将老数组中的元素拷贝到新数组中。开辟新数组耗费资源
d:链表结构:增删快 查询慢
查询慢:每次都需要从链头或者链尾找起
增删快:只需要修改元素记录的下个元素的地址值即可不需要移动大量元素
LinkedList集合的自身特点
底层采用链表结构,每次查询都要从链头或链尾找起,查询相对数组较慢
但是删除直接修改元素记录的地址值即可,不要大量移动元素
LinkedList的索引决定是从链头开始找还是从链尾开始找
如果该元素小于元素长度一半,从链头开始找起,如果大于元素长度的一半,则从链尾找起
Vector类的特点: 已废 类似Nokia(曾经的王者)
Vector集合数据存储的结构是数组结构,为JDK中最早提供的集合,它是线程同步的
Vector中提供了一个独特的取出方式,就是枚举Enumeration,它其实就是早期的迭代器。
此接口Enumeration的功能与 Iterator 接口的功能是类似的。
Vector集合已被ArrayList替代。枚举Enumeration已被迭代器Iterator替代。
|
|