关于java:JAVA集合框架总结二

linkedList绝对于ArrayList领有更加丰盛的办法实现,须要的时候能够间接查问api文档,这里就不列出

对于Vector:

1、Vector也是List接口的一个子类实现
2、Vector和ArrayList一样,底层都是应用数组进行实现
3、面试常常问两者的区别
(1)ArrayList是线程不平安的,效率高,Vector是线程平安的,然而效率较低
(2)ArrayList在进行扩容的时候,是扩容1.5倍,Vector扩容的时候,是扩容2倍


接下来讲一下对于List中的迭代器Iterator:

在java代码中蕴含3种循环形式

** do。。。while
while
for 还有一种加强for循环的形式,能够简化循环的编写**

对于Iterable

所有的汇合类都默认实现了Iterable的接口(通过外部类来实现调用),实现此接口意味着具备了加强for循环的能力,也就是for-each
加强for循环实质上应用的也是iterator性能,此接口意味着具备了加强for循环的能力,也就是for-each

办法:

iterator() 返回另一个Iterator接口
foreach() 在iterator办法中,要求返回一个Iterator的接口实例对象,此接口中蕴含了hasNext()、next()
在应用iterator进行迭代的过程中如果删除其中的某个元素会报错,并发操作异样,因而如故宫 遍历的同时须要批改元素,倡议应用ListIterator
ListIterator迭代器提供了向前和向后两种遍历形式
始终是通过corsor和lastret的指针来获取元素值及向下的遍历索引
当应用向前遍历的时候必须要保障指针在迭代器的结尾,否则无奈获取值
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        int i1 = 0;
        for(int i = 0;i<list.size();i++)
        {
            System.out.println(list.get(i));
        }
        //迭代器
//        Iterator iterator =list.iterator();
 //边遍历边删除元素必须用到此办法
 ListIterator listIterator = list.listIterator();
        while (listIterator.hasNext()){
            Object o = listIterator.next();
            if(o.equals(1)){
                listIterator.remove();
            }
            System.out.println(listIterator.next());
        }
        //这时候指针在最初
 while(listIterator.hasPrevious()){
            System.out.println(listIterator.previous());
        }
        System.out.println("-------------");
        for(Object i :list){
            System.out.println(i);
        }
    }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理