精华内容
下载资源
问答
  • 目前有三种迭代方法:for循环迭代器和Foreach。前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一起比较。下面我们就三种方法的概念进行理解,然后ArrayList中探索三种方法的效率。1....

    ced1b38d8eee50cde4f6b145f0038b68.png

    在进行迭代的时候,程序运行的效率也是我们挑选迭代方法的重要原因。目前有三种迭代方法:for循环、迭代器和Foreach。前两者相信大家都非常熟悉,为了更加直观分析效率的不同,我们还加入Foreach一起比较。下面我们就三种方法的概念进行理解,然后ArrayList中探索三种方法的效率。

    1.概念理解

    for循环:是支持迭代的一种通用结构,是最有效,最灵活的循环结构

    迭代器:是通过集合的iterator()方法得到的,所以我们说它是依赖于集合而存在的

    Foreach:通过阅读源码我们还发现一个Iterable接口。它包含了一个产生Iterator对象的iterator()方法,而且将Iterator对象被foreach用来在序列中移动。对于任何实现Iterable接口的对象都可以使用。

    2.效率实例

    ArrayList中的效率对比:List integers = Lists.newArrayList();

    for(int i=0;i<100000;i++){

    integers.add(i);

    }

    long start1 = System.currentTimeMillis();

    for(int count =0 ;count<10;count++){

    for(int i=0;i

    int j=integers.get(i);

    }

    }

    System.out.println(String.format("for循环100次时间:%s ms",System.currentTimeMillis()-start1));

    long start2 = System.currentTimeMillis();

    for(int count =0 ;count<10;count++) {

    for (Integer i : integers) {

    int j = i;

    }

    }

    System.out.println(String.format("foreach循环100次时间:%s ms",System.currentTimeMillis()-start2));

    long start3 = System.currentTimeMillis();

    for(int count =0 ;count<10;count++) {

    Iterator iterator = integers.iterator();

    while(iterator.hasNext()){

    int j=iterator.next();

    }

    }

    System.out.println(String.format("迭代器循环100次时间:%s ms",System.currentTimeMillis()-start3));

    结果:for循环100次时间:15 ms

    foreach循环100次时间:25 ms

    迭代器循环100次时间:20 ms

    ArrayList下三者效率差不多,for循环最优,因为ArrayList通过数组来实现,数组通过索引来定位的时间复杂度是O(1),1次就能定位到,所以效率非常高。

    总结:for循环便于访问顺序存储的记录,而foreach和迭代器便于访问链接存储。

    以上就是java迭代器和for循环优劣的分析,可以看出for循环作为我们最常用的知识点,在使用效率上是最高的。不过在访问链接存储的用处上,还是推荐大家使用其它两种方法。

    展开全文
  • List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); list.add("3"); list.add("4"); System.out.println(list);... for (int i = 0; i < list.size(); ) { .
     List<String> list = new ArrayList<>();
            list.add("1");
            list.add("2");
            list.add("3");
            list.add("3");
            list.add("4");
            System.out.println(list);
      for (int i = 0; i < list.size(); ) {
                String s = list.get(i);
                if (s.equals("4")) {
                    list.remove(i);
                    continue;
                }
                System.out.println(i);
                i++;
            }
            System.out.println(list);
    
            Iterator<String> it = list.iterator();
            while(it.hasNext()) {
                if (it.next().equals("1")) {
                    it.remove();
                }
            }
            System.out.println(list);
        }
         
    
    展开全文
  • 迭代器 概述 在程序开发过程中,经常需要遍历集合当中的所有元素,针对这种情况,JDK 官方有提供了一个接口 Java.util.Iterator Iterator 接口它也是集合当中的一员,但是它与Map,Collection 接口不同 Collection 接口...

    迭代器

    概述

    在程序开发过程中,经常需要遍历集合当中的所有元素,针对这种情况,JDK 官方有提供了一个接口
    Java.util.Iterator
    Iterator 接口它也是集合当中的一员,但是它与Map,Collection 接口不同
    Collection 接口和 Map接口它主要是用来存储元素的,
    而 Iterator 主要是用来迭代访问 Collection 与 Map 接口当中的元素,
    因此我们也经常把 Iterator 对象称为迭代器.
        
    想要遍历 Collection 集合当中的元素
    首先需要获取该集合的迭代器,通过迭代器完成迭代操作
    

    获取迭代器的方法

    public Iterator iterator()
        获取集合对应的迭代器,用来遍历集合当中的元素
    

    迭代的概念

    迭代: collection 集合元素的通用获取方式.
    具体实现 : 在每次取元素之前首先判断集合当中有没有元素,
    如果有,就把这个元素取出来,继续在判断
    如果还有就再一次取出来,一直把集合当中的所有元素全部取出来
    我们把这种取出方式在专业术语中称为迭代
    

    Iterator接口的常用API 方法

    public E next()
        迭代获取迭代的下一个元素
    public Boolean hasNext()
        有容器中还有元素时,返回 true 没有元素返回 false
    

    示例

    Iterator 是一个接口,无法直接使用
        需要借助 Iterator 它的实现类对象,获取实现类对象的方式比较特殊
        Collection 接口当中有一个 api 方法 Iterator()
        这个方法就是以迭代器实现类的对象
        
    Iterator<E> iterator()
        返回值就是 此 Collecton 元素上要进行迭代器的迭代对象
        
    迭代器使用步骤
        1.通过集合的Iterator() 方法获取此集合元素的迭代器实现类对象,
    		使用Iterator接口进行接收(多态)
        2.使用Iterator接口中定义的方法hasNext() 判断集合当中还有没有下一个元素
        3.使用Iterator接口当中的方法next() 取出集合当中的下一个元素
    
    在调用 Iterator 接口当中的next 方法之前,迭代器的索引位于第一个元素之前,不指向任何元素
    当第一次调用迭代器的next 方法后,迭代器的索引会向后移动一位,指向第一个元素并将该元素返回
    当再次调用 next() 方法时,迭代器的索引会指向第二个元素并将该元素返回,以此类推
    直到 haSNext() 方法 返回 false,表示迭代器达到了集合的末尾,终止对元素的遍历
        
    如果到达末尾后再继续取,会报异常 NoSuchElement
    
    Iterator<E> 接口也是有泛型的,迭代器的泛型是跟着集合走的,集合当中定义的什么类型,迭代器就是什么类型
    

    增强 for 循环

    概述

    在JDK 1.5 之后出现了新的循环结构,for each 循环
        一般也称为增强 for 循环
        专门用来遍历数组和集合
        它的内部原理其实是有个迭代器 Iterator 
        在迭代过程中不能对集合当中的元素进行增删操作
    

    格式

    for(元素的数据类型 变量名 : Collection 集合或者数组){
        // 操作代码
    }
    
    主要用于遍历 Collection 集合或者数组.
        在遍历过程中,一定不要进行增删操作
    

    示例

    int[] arr = {1,3,5,7,9,12}
    // 使用 for each 循环遍历 arr 数组
    for(int i : arr){ // i 代表的是数组当中的每个元素
        sout(i);
    }
    
    // Collection 
    Collection<String> coll = new ArrayList<>();
    coll.add("A");
    coll.add("B");
    coll.add("C");
    for(String s : coll){
        sout(s);
    }
    

    备注

    目标只能是 Collection 集合或者是数组,增强 for 循环 仅仅是作为遍历操作出现.简化迭代器的操作.
    
    展开全文
  • import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class asd{ public static void main(String[] args) { Collection<String> playerStrings=new ArrayList&...
    package uuhuih;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    public class asd{
    	public static void main(String[] args) {
    	Collection<String> playerStrings=new ArrayList<String>();//创建集合
    	playerStrings.add("詹姆斯");
    	playerStrings.add("科比");
    	playerStrings.add("杜兰特");
    	Iterator<String> iterator=playerStrings.iterator();//调用collection中的iterator方法,获取迭代器的实现类对象,使用Iterator接口接受(多态)
    	boolean a=iterator.hasNext();//判断是否有下一个元素,有则返回true
    	System.out.println(a);//true
    	while(iterator.hasNext()==true)
    	{
    		System.out.println(iterator.next());//next()方法可直接返回下一个元素
    	}//詹姆斯,科比,杜兰特
    	int []asa= {1,2,3};//增强for循环
    	for(int i:asa) {
    		System.out.println(i);
    	}
    			}
    	
    	}
    
    展开全文
  • Java 迭代器以及和for循环的比较

    千次阅读 2015-07-30 08:39:38
    迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为...Java提供一个专门的迭代器>Iterator,我们可以对某个序列实现该interface,来提供标准的Java迭代器。Iterator接口实现后的功能是“使用”一个迭代器.
  • Java迭代器(iterator详解以及和for循环的区别)觉得有用的话,欢迎一起讨论相互学习~前言迭代器是一种模式、详细可见其设计模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的...
  • 2 增强for循环 1 Iterator迭代器 1.1 Iterator接口 java.util.Iterator接口也是Java集合中的一员; Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器。 public Iterator ...
  • Java迭代器(iterator详解以及和for循环的区别)
  • 一、Iterator接口 1、集合有很多种,存储的数据类型不同,那么取出的方式也不同,但是有了迭代器就可以都取出来 2、迭代:即Collection集合元素的...3、java.util.Iterator接口:迭代器(对集合进行遍历) 有两个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 546
精华内容 218
关键字:

java迭代器和for循环

java 订阅