for循環,增強型for循環,迭代(從前往後,從後往前)

最近看到迭代附近了,一些數據結構,如列表,鏈表,集合等都喜歡使用迭代器來索引,我想主要是他們大多不基於下標,而且JAVA提供了迭代器對象。

for循環最簡單了,屬於counting loop,而while循環屬於conditional loop,一般死循環喜歡用while,可以計數的用for循環,原因是for循環比較節省內存資源,定義的索引在循環執行完之後就被內存回收了。

增強型for循環用於數組,比如說我們要遍歷一個字符串型數組str,語法爲for(String element: str){ element....}, 即for循環內提一個參數爲所要遍歷數組的類型,第二個爲我們自定義的變量名,比如說element, 然後是冒號(:),最後是所要遍歷的數組,然後我們在for循環內可以直接用element了,這個element就是每次得到的數組內的元素。增強型for循環比普通for循環效率要高,見增強型for循環效率。增強型for循環效率提升了,當然也有缺點,那就是對於關於下標的元素操作不支持。如果你有疑問,爲什麼每次獲得的element元素都是數組中的不同的元素呢?他又是怎麼全部遍歷的呢?接着看迭代器吧。

import java.util.*;
public class ArrayListTest
{
 public static void main(String[] args)
 {
  List<String> list = new ArrayList<String>();
  list.add("China");
  list.add("America");
  list.add("Russia");
  list.add("Canada");
  Iterator <String> it = list.listIterator();
  while (it.hasNext())
  {
   String str = it.next();
   System.out.println(str);
  }
 }
}

注意:

Iterator it = list.listIterator();
表明list對象調用iterator()方法,返回一個Iterator對象,此時,迭代器的指針指向第一個元素,然而參考API 註釋文檔,我們發現,


listIterator()有重載函數listIterator(int index),指定其起始位置。

此時,我們就可以改寫下面這一部分,以使得迭代器從後向前迭代。

  List<String> list = new ArrayList<String>();
  
  Iterator <String> it = list.listIterator(list.size());
  while (it.hasPrevious())
  {
   String str = it.previous();
   System.out.println(str);
  }
 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章