集合存放的都是对象的引用。
Collection:
|——List:列表,每个元素都有自己的角标,可以存入重复的元素,有序(存入的和取出的顺序一致).
特有方法:
添加:add(index, Element)
获取:get(index),iterator()
修改:set(index,Element)
删除:remove(index)
|——ArrayList:JDK1.2出现,底层使用的数组数据结构.线程不安全的,此实现不是同步的,效率高;查询速度快
|--Vector(少用):JDK1.0出现,1.2融合到collection中,底层页是使用数组数据结构.线程安全,实现是同步的,效率低,被ArrayList替代.查询速度快
|--LinkedList:底层是链表数据结构。增删速度很快,查询组度慢.
|--...
|--Set
|--...
import java.util.*;
class ListDemo
{
public static void main(String[] args)
{
ArrayList lst = newArrayList();
lst.add("abc");
lst.add("def");
lst.add("hi");
lst.add(0, "hahaha");
lst.remove(2);
lst.set(1,"sx");
System.out.println("—-get方法遍历ArrayList——");
printList(lst);
System.out.println("——使用Iterator遍历ArrayList——");
printListByIterator(lst);
//通过Enumeration接口实现ArrayList的输出.优先使用Iterator.
System.out.println("——使用Enumeration接口遍历ArrayList——");
final Iterator it =lst.iterator(); //匿名内部类访问局部成员,需要用final修饰
Enumeration er = newEnumeration()
{
publicboolean hasMoreElements()
{
returnit.hasNext();
}
public ObjectnextElement()
{
returnit.next();
}
};
//熟悉Vector特有方法:
Vector v = new Vector();
v.addElement("a");
v.addElement("b");
v.addElement("c");
v.addElement("d");
System.out.println("—-get方法遍历Vector——");
printList(v);
System.out.println("——使用Iterator遍历Vector——");
printListByIterator(v);
//通过Enumeration接口实现ArrayList的输出.优先使用Iterator.
System.out.println("——使用Enumeration遍历Vector——");
for (Enumeration en =v.elements(); en.hasMoreElements(); )
{
System.out.println(en.nextElement());
}
}
public static void printListByIterator(Listlst)
{
//Iterator it =lst.iterator();
//while(it.hasNext())
//{
//System.out.println(it.next());
//}
//迭代器更优化的写法:
for (Iterator it1 =lst.iterator(); it1.hasNext(); )
{
System.out.println(it1.next());
}
//区别:while循环,循环完成后,对象it可能需要很长的时间,才能被回收。
// for循环,循环完成后,对象立即成为垃圾,被回收.
}
public static void printList(List lst)
{
for (int x = 0; x< lst.size(); x++)
{
System.out.println("lst["+x+"]="+lst.get(x));
}
System.out.println("size:"+lst.size());
}
}