Collection
List:元素是有序的,元素可以重复。因为该集合体系有索引。
1>ArraryList:底层的数据结构使用的是数组结构。特点:查询速度快,但是增删较慢。线程不同步
2>LinkedList:底层使用的是链表结构。特点:增删速度快,查询速度慢
3>Vector:底层是数组数据结构。线程同步。被ArrayList替代了
Set:元素是无序的,元素不可以重复
List:特有方法。凡是可以操作角标的方法都是该体系的特有方法
增:
add(index,element)
addAll(index,Collection)
删:
remove(index);
改:
set(index,element);
查:
get(index);
subList(from,to);
listIterator();
List集合特有的迭代器。ListIterator是Iterator的子接口
在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。
所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断,取出,删除的操作。如果想要其他的操作如添加、修改等,就需要用其子接口:ListIterator。
该接口只能通过List集合的listIterator方法获取。
import java.util.*;
class ListDemo
{
public static void main(String[] args)
{
//演示列表迭代器
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
ListIterator li = al.listIterator();
sop("hasprevious():"+li.hasPrevious());
while(li.hasNext())
{
Object obj = li.next();
if(obj.equals("java02"))
{
//li.add("java007");
li.set("java009");
}
}
sop("hasNext():"+li.hasNext());
sop("hasPrevious():"+li.hasPrevious());
while(li.hasPrevious())
{
sop("pre::"+li.previous());
}
/*
//在迭代过程中,准备添加或删除元素
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next(); //用迭代器的方法取出元素
if(obj.equals("java02"))
{
al.add("java008"); //用集合的方法添加元素
//两种方法对同一元素进行操作,会产生并发修改异常
//it.remove();
//sop("obj="+obj); //将java02的引用从集合中删除
}
}
*/
sop(al);
}
public static void method()
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
sop("原序列:"+al);
//在指定位置添加元素
al.add(1,"java05");
sop(al);
//删除指定位置的元素
al.remove(2);
sop(al);
//修改元素
al.set(2,"java09");
sop(al);
//通过角标获取元素
sop("get(1):"+al.get(1));
sop(al);
//获取所有元素
for(int x = 0;x < al.size();x++)
{
sop("al("+x+")="+al.get(x));
}
Iterator it = al.iterator();
while(it.hasNext())
{
sop("next:"+it.next());
}
//通过indexof获取对象的位置
sop("index = "+al.indexOf("java02"));
List sub = al.subList(1,3);
sop("sub = "+sub);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}