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可以从前往后,也可以从后往前来进行迭代。可以对迭代器列表进行删除,添加,修改的操作。可以获取迭代器列表的索引。

 

posted @ 2018-09-27 19:51  ejeremy  阅读(3704)  评论(0编辑  收藏  举报