ArrayListDemo

/*
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);
        */
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值