for循环,增强型for循环,迭代(从前往后,从后往前)

来源:互联网 发布:桂树焉知泰山之高的焉 编辑:程序博客网 时间:2024/04/30 12:22

最近看到迭代附近了,一些数据结构,如列表,链表,集合等都喜欢使用迭代器来索引,我想主要是他们大多不基于下标,而且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);  } 



0 0
原创粉丝点击