Collection
|--List:元素是有序的,元素可以重复。因为该集合体系有索引
|--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快,但是增删稍慢
|--LinkedList:底层使用的链表结构。特点:增删速度很快,查询稍慢
|--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。
ListIterator:应用在遍历过程中做增删改查
List集合特有的迭代器,ListIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生ConcurrentModificationException异常
所以在迭代器时,只能用迭代器的方法操作元素。可是Iterator方法是有限的。
只能对元素进项判断,取出,删除的操作
如果想要其他的操作如添加,修改等,就需要使用其子接口,ListIterator。
该接口只能通过List集合的ListIterator方法获取。
import java.util.*;
class ListDemo1
{
public static void main(String[] args)
{
method_iterator();
}
public static void method_iterator()
{
ArrayList al = new ArrayList();//集合功能操作元素
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
sop("原集合"+al);
ListIterator li = al.listIterator();
//逆向迭代hasPreviouse(),previous(); hasNext(), next()正向迭代
sop("hasPreviouse():"+li.hasPrevious());
while (li.hasNext())
{
Object obj = li.next();
if(obj.equals("java02"))
{
//li.add("java009");
li.set("java006");
}
}
//sop("hasNext():"+li.hasNext());
//sop("hasPreviouse():"+li.hasPrevious());
while(li.hasPrevious())
{
sop("pre:"+li.previous());
}
sop(al);
/*
//在迭代过程中,准备添加或者删除元素
sop("原集合"+al);
Iterator it = al.iterator();
while(it.hasNext())
{
//迭代器方法操作元素
Object obj = it.next();//里面存的是什么对象类型不清楚,所以可以直接是Objext
if(obj.equals("java02"))
//al.add("java008");//报错:ConcurrentModificationException,集合功能与迭代器同时操作元素,有安全隐患
it.remove();//将java02在集合中移除,在内存中还是存在的
sop("obj="+obj);
}
sop(al);
*/
}
public static void method_get()
{
ArrayList al = new ArrayList();
al.add("java01");
al.add("java02");
al.add("java03");
al.add("java04");
//通过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);
}
}
网友评论