Foreach 与迭代器_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Foreach 与迭代器

Foreach 与迭代器

 2011/9/27 7:35:14  sunlujing  http://sunlujing.iteye.com  我要评论(0)
  • 摘要:在java编程中我会大量的使用foreach语法来遍历Collection对象以及数组对象。本文主要是解释一下foreach的实质以及如何改变foreach遍历的行为?pointA:foreach语句之所以能够工作是因为在JavaSe5中引入的Iterable接口,该接口包含一个能产生Iterator对象的iterator方法。该Iterable接口被foreach用来在序列中移动,任何实现Iterable的接口类都可以被foreach遍历
  • 标签:for

在java编程中我会大量的使用 foreach 语法来遍历Collection对象 以及数组对象。

?

本文主要是解释一下foreach的实质以及如何改变 foreach遍历的行为

?

point A:

?

foreach语句之所以能够工作是因为 在JavaSe5 中引入的Iterable接口,该接口包含一个能产生Iterator对象的iterator方法。该Iterable 接口被foreach用来在序列中移动,任何实现Iterable 的接口类都可以被foreach遍历。

实现Itreable 接口主要是 重写 iterator方法,让该方法返回一个实现 iterator接口的对象。

interface iterator{

hasNext();

next();

? ? ? ? remove();

}

?

下面使用thinking in java 的一个例子来说明 怎么构建一个IterableClass

?

public class IterableClass implements Iterable<String>{

public Iterator<Object> iterator(){

return new Iterator<String>(){

boolean?hasNext(){}

String?next(){}

? ? ? ? void?remove(){}

}

}

}

?

point B:

?

闲杂假设你有一个Iterable 类 比如 ArrayList<String>对象 arrayObj,

你使用 for(String str:arrayObj)只能实现默认顺序遍历。

如果你想使用逆序遍历,就需要重写一个生产 Iterator对象到方法,并把生产的ReverIterator 对象放入foreach语法中如下:

?

? ? ? ? ? for(String str:ReverArray.reverd()).

?

ex:

public class ReverArray extends ArrayList<String>{

public Iterable<String> ?reversed(){

return new Iterable <String>(){

?

public Iterator<String> iterator(){

return new Iterator<String>(){

next();hasNext();remove();

//在这里改变对应方法的行为即可

}

}

}

}

}

?

?

?

?

?

发表评论
用户名: 匿名