java遍歷

java中遍歷集合和數組的方法:java

(1)for數組

(2)for..eachspa

(3)iterator接口

相同點:均可以用來遍歷數組和集合it

不一樣點:for循環

         1.形式差異容器

           for的形式是
                for(int i=0;i<arr.size();i++){...}

         foreach的形式是
                for(int i:arr){...}

         iterator的形式是
                Iterator it = arr.iterator();
                while(it.hasNext()){ object o =it.next(); ...}object

          2.條件差異foreach

             for須要知道集合或數組的大小,並且須要是有序的,否則沒法遍歷;
             foreach和iterator都不須要知道集合或數組的大小,他們都是獲得集合內的每一個元素而後進行處理;循環

          3.多態差異

             for和foreach都須要先知道集合的類型,甚至是集合內元素的類型,即須要訪問內部的成員,不能實現態;
             iterator是一個接口類型,他不關心集合或者數組的類型,並且他還能隨時修改和刪除集合的元素,舉個例子:

                              public void display(Iterator<object> it){
                                     while(it.hasNext()){
                                          system.out.print(it.next()+"");
                                     }
                                }           
             當咱們須要遍歷不一樣的集合時,咱們只須要傳遞集合的iterator(如arr.iterator())看懂了吧,這就是iterator的好處,

             他不包含任何有關他所遍歷的序列的類型信息,可以將遍歷序列的操做與序列底層的結構分離。迭代器統一了對容器的訪問方式。

             這也是接口的解耦的最好體現。

           4.用法差異
             for循環通常用來處理比較簡單的有序的,可預知大小的集合或數組
             foreach可用於遍歷任何集合或數組,並且操做簡單易懂,他惟一的很差就是須要了解集合內部類型
             iterator是最強大的,他能夠隨時修改或者刪除集合內部的元素,而且是在不須要知道元素和集合的類型的狀況下進行的

            (緣由可參考第三點:多態差異),當你須要對不一樣的容器實現一樣的遍歷方式時,迭代器是最好的選擇!

相關文章
相關標籤/搜索