List接口
特点:
有序
有索引(特有)
操作索引一定要防止索引越界异常
void add(int index, E element);
E get(int index);
E remove(int index);
E set(int index, E element); //用指定元素替换指定位置的元素
//并返回原元素
允许存储重复的元素
List遍历的三种方式:
1.普通for循环
for (int i = 0; i < str.size(); i++) {
String s = str.get(i);
System.out.println(s);
}
2.迭代器遍历
Iterator<String> it = str.iterator();
while(it.hasNext()) {
String next = it.next();
System.out.println(next);
}
3.增强for循环
for (String s : str) {
System.out.println(s);
}
子类:ArrayList集合
不是同步的,就是多线程,意味着速度快
子类:LinkedList集合
LinkedList是一个双向链表,也是一个多线程,速度快
查询慢,增删快
使用LinkedList集合特有的方法,不能使用多态(多态看不到子类特有的方法,除非向下转型)
有大量操作首尾元素的方法
void addFirst(E e);
void addLast(E e);//等效于 add();方法
E getFirst();
E getLast();
E reomveFirst();
E removeLast();
E pop(); //从列表所表示的堆栈处弹出一个元素
//等于addFirst();方法
//使用remove时,要确保指针已经指向了元素
staff.add("wan");
staff.add("ji");
staff.add("xuan");
ListIterator<String> iter = staff.listIterator();
iter.remove(); // xxxxx
iter.next(); //对对对!
iter.remove();
ListIterator<String> iter1 = staff.listIterator(); //不能有两个迭代器进行操作
ListIterator<String> iter2 = staff.listIterator();
iter2.add("second");
iter1.add("haohao");
//如何做到并发修改呢???不用迭代器
子类:Vector集合
单列集合的祖宗,出现比较早
底层是一个数组,同步单线程,速度慢,被ArrayList替代了
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。