zoukankan      html  css  js  c++  java
  • java中的遍历总结与不同.

    java中的遍历方式:

       在java中总会遇到遍历,或许是数组,或许是集合,而数组是有限的长度,但是在集合中呢?理想中只要你的内存足够,就可以存取你想要的任何长度。

      但是再说到遍历,可以分为遍历一个有序的集合或者无序的集合或者数组,下面我们就看下对于它们两者之间的不同遍历方式。

      1.使用传统的for循环:

         我们通常把对有下标的简单的遍历,结构为:for(起始条件;终止条件;更改起始条件){      }形如:

    1 //创建的一个数组
    2         int[] arr= {1,2,3,4,5,6,7,8,9};
    3         
    4          for(int i=0;i<=arr.length;i++){
    5              System.out.println(arr[i]);
    6          }
    7          

     在这种简单的for循环中,可以根据下标获取相对应的值.通常使用在数组或者有序的集合中。

    2.使用增强型for循环,结构为:for( 接收循环的数据类型  值:需要循环的对象){    }

     对于上面的数组遍历,也可以使用增强型循环;形如 :

    for(int a:arr) {
                 System.out.println(a);
             }
             

     可以看出增强型循环不需要下标值,可以直接遍历出数组中的元素;通常我们使用增强型循环来遍历一个集合,该集合可以是没有下标的或者有下标的.

    3.使用迭代器.但是需要说明的是,迭代器的使用只能在集合中使用.其实对集合的遍才是我写这篇文章的主要目的

       集合有Connlection  、Map  这两个类型的集合都是接口类型

      Connlection中的子接口有List ,然而list有实现类 ArrayList

      ①.对于Arraylist 使用迭代器进行遍历

     1 ArrayList<String>  list=new ArrayList<>();
     2         list.add("jeremy");
     3         list.add("张三");
     4         list.add("李四");
     5         
     6         
     7         Iterator iterator=list.iterator();//调用Arraylist中的迭代器方法
     8                                            //返回的是Iterator 类型
     9         
    10         
    11         while(iterator.hasNext()) {  // hasNext() 方法 判断迭代器中是否有可以迭代的元素
    12                                      //并将指针下移
    13             Object  item=iterator.next(); 
    14             System.out.println(item);
    15             
    16         }

     ②对于set的遍历

    //和list 集合中的遍历方法一致  区别在于set集合没有顺序
            // 不可以根据下标获得
             Set<String > set=new  HashSet<>();
             set.add("jeremy");
             set.add("张三");
             set.add("李四");
            
             //使用iterator  遍历
             Iterator< String > iterator=set.iterator();
             while(iterator.hasNext()) {
                 
                 
                 Object object=iterator.next();
                 System.out.println(object);
                 
             }
             
            //可以使用foreach循环遍历  
             for(String item:set) {
                 System.out.println(item);
             }
        }

    当然,没有增强型循环 foreach可以使用在list中  

        ③对于map的遍历

       map的存储格式为键1----值 1,键2-----值2.  可根据get(key)方法 来取得值,key 为键

     并且map也是一个无序 的集合  ,map没有自带的iterator()方法,     要遍历map,除了使用foreach

     我们需要使用一个''中间人''. map中有一个方法为keyset();可以得到键,返回一个Set对象.

            //创建一个map 
            Map<String, Object> map=new HashMap<>();
            
            
            //添加数据 
            map.put("name", "jeremy");
            map.put("name1", "张三");
            map.put("name3", "李四");
            
            
            //使用set作为中间人 接收键名
            Set<String > set=map.keySet();
            
            //调用set中的迭代器
           Iterator< String > iterator=set.iterator();
            while(iterator.hasNext()) {
                Object object=    iterator.next();
                //根据健名获得键值
                System.out.println(object+"-----"+map.get(object));
            }

    还有一种迭代器是Iterator的子接口LIstIterator,但是这种迭代器中用在有序的集合中,

    它们之间的区别为:

      ListIteratorIterator的子接口。

       Iterator它的遍历只能从前往后来迭代元素。只能对迭代器列表进行删除操作,

       ListIterator可以从前往后,也可以从后往前来进行迭代。可以对迭代器列表进行删除,添加,修改的操作。可以获取迭代器列表的索引。

  • 相关阅读:
    Openwrt单独编译某一个模块而不是整个固件
    在ubuntu 14.04 编译android 2.3.1 错误解决办法
    使用cydia substrate 来进行android native hook
    使用Privoxy转化SSH到HTTP代理
    使用xposed 来解阿里ctf-2014 第三题
    一个android dex 转java源码工具
    git CVE-2014-9390 验证以及源码对比
    一键结束port 5037占用
    运动物体检测——光流法(摄像机固定)
    运动目标检测ViBe算法
  • 原文地址:https://www.cnblogs.com/wolf-liang/p/9709955.html
Copyright © 2011-2022 走看看