Java的两种列表
List:列表
- 有序的Collection
- 允许重复元素
- 允许嵌套:{1,{1,2},1,2}
ArrayList:
- 以数组实现,不支持同步
- 利用索引快速定位访问
- 插入删除慢,因为每次插入/删除将会使后面元素向后/前移动
- 适合变动不大,主要用于查询的数据
- 和数组相比,其容量大小可动态调整
LinkedList:
- 以双向链表实现,不支持同步
- 可被当作堆栈、队列、双端队列进行操作
- 顺序访问高效,随机访问差
- 插入和删除高效,因为只需改变元素指针,而无需移动元素
- 适用于经常变化的数据
List的初始化:
声明的元素变量必须为封装类
ArrayList <Integer> array = new ArrayList<Integer>();
LinkedList <Integer> link = new LinkedList<Integer>();
List的遍历:
- 迭代器(Iterator)遍历:
Iterator<Integer> iter1 = array.iterator(); //使用Iterator迭代器
Iterator<Integer> iter2 = link.iterator();
while(array.hasNext()){
array.next();
}
while(link.hasNext()){
link.next();
}
- 索引遍历
for(int i=0;i<array.size();i++) {
array.get(i);
}
for(int i=0;i<link.size();i++) {
link.get(i);
}
- for-each遍历
for(Integer item : array) {
;
}
for(Integer item : link) {
;
}
列表常用的方法:
*注:下列某些方法是LinkedList或ArrayLisrt独有的*方法名 | 返回类型 | 方法作用 |
add(E e) | boolean | 将指定元素添加到列表末尾 |
addfirst(E e) | boolean | 将指定元素插入到开头(LinkedList) |
clear() | void | 清除所有元素 |
contains(Object o) | boolean | 如果列表包含指定元素,则返回true |
element() | E | 检索但不删除第一个元素(LinkedList) |
get(int index) | E | 返回指定索引的值 |
getfirst() | boolean | 返回第一个元素(LinkedList) |
peek() | E | 检索但不删除第一个元素(LinkedList) |
poll() | E | 检索并删除第一个元素(LinkedList) |
remove() | E | 检索并删除第一个元素 |
remove(int index) | E | 检索并删除指定元素 |
set(int index, E element) | E | 用指定的元素替换此列表中指定位置的元素(ArrayList) |
toArray() | Object[ ] | 按序返回一个包含此列表所有元素的数组 |