美文网首页
day14-05-集合框架(ListIterator)/06-集

day14-05-集合框架(ListIterator)/06-集

作者: 姗婷 | 来源:发表于2020-06-15 23:11 被阅读0次

    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);
        }
    }
    

    相关文章

      网友评论

          本文标题:day14-05-集合框架(ListIterator)/06-集

          本文链接:https://www.haomeiwen.com/subject/xrentktx.html