您的位置:首页 > 理论基础 > 数据结构算法

ArrayListDemo

2016-07-10 20:12 417 查看
/*
Collection
|--List:元素是有序,元素可以重复,因为有索引
|--ArrayList:底层的数据结构使用的数组结构。特点:查询速度很快,但是增删稍慢。线程不同步
|--LinkedList:底层使用的是链表数据结构。特点:增删速度很快,查询稍慢。
|--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 sop(Object obj)
{
System.out.println(obj);
}
public static void method()
{
ArrayList al = new ArrayList();
//添加元素
al.add("java01");
al.add("java02");
al.add("java03");
sop("原集合是"+al);

ListIterator li = al.listIterator();
while(li.hasNext())
{
Object obj = li.next();
if(obj.equals("java02"))
li.add("java009");
}
sop(al);
//在制定位置添加元素
al.add(1,"java09");

//删除制定位置的元素。
//al.remove(2);
//修改元素
//al.set(2,"java007");
//通过角标获取元素。
sop("get(1):"+al.get(1));
sop(al);
//获取所有元素。
for(int x=0;x<al.size();x++)//集合size()区别于数组的length()
{
System.out.println("al("+x+")="+al.get(x));//用for循环遍历获取并输出
}
Iterator it = al.iterator();
while(it.hasNext())
{
sop("nex:"+it.next());
}
//通过indexOf获取对象的位置。
sop("index="+al.indexOf("java02"));
List sub = al.subList(1,3);
sop("sub="+sub);

System.out.println("Hello World!");
}
public static void main(String[] args)
{
//演示列表迭代器
ArrayList al = new ArrayList();
//添加元素
al.add("java01");
al.add("java02");
al.add("java03");
sop("原集合是"+al);

ListIterator li = al.listIterator();
//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);
/*
//在迭代过程中,准备添加或者删除元素。
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();//把next()传给obj
if(obj.equals("java02"))
//al.add("java008");
it.remove();//将java02的引用从集合中删除了
sop("obj="+obj);
}
sop(al);
*/
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息