List特点及体系:
元素有序,可以重复。
|--ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
|--LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
|--Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。由于线程安全,所以查询的效率也低。一般不用。
什么时候使用哪种具体的集合类呢?
A:如果将来存储数据大部分就是为了显示操作,用ArrayList
B:如果将来存储数据大部分在做变更操作,用LinkedList
C:如果涉及到线程安全问题,用Vector
如果你不知道用哪个,就用ArrayList。
ArrayList(掌握)
基本功能:Add(), Insert(), Delete(), Find().
LinkedList(掌握)
特有功能:
A:添加元素 addFrist()addLast()
B:删除元素 removeFirst() removeLast()
C:获取元素getFirst() getLast()
Vector(了解)<基本已经不用这个>
特有功能:
A:添加元素: addElement() -- add()
B:获取元素: elementAt() -- get()
C:类似迭代器的功能:
Enumeration elements()
hasMoreElements()
nextElement()
用ArrayList存储元素对象并遍历,代码体现:
ArrayList<String> array = new ArrayList<String>();
array.add("haha");
array.add("hehe");
array.add("xixi");
Iterator<String> it = array.iterator();
while(it.hasNext())
{
String s = it.next();
System.out.println(s);
}
总结:List : 次序是List最重要的特点:它保证维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素(这只推荐LinkedList使用。)一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元素。
ArrayList : 由数组实现的List。允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。ListIterator只应该用来由后向前遍历ArrayList,而不是用来插入和移除元素。因为那比LinkedList开销要大很多。
LinkedList : 对顺序访问进行了优化,向List中间插入与删除的开销并不大。随机访问则相对较慢。(使用ArrayList代替。)还具有下列方法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些方法 (没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。
细节问题:
A:并发修改问题
解决方案:
要么全部使用集合对象,要么全部使用迭代器(ListIterator)对象操作。
B:集合可以存储基本数据类型,其实存储不是基本数据类型,而是装箱后的对象。