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可以從前往后,也可以從后往前來進行迭代。可以對迭代器列表進行刪除,添加,修改的操作。可以獲取迭代器列表的索引。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM