下面一段来自Java编程思想的源码:
foreach使用的是集合的iterator()的方法的返回值Iterator对象来经行遍历的。(不包括数组)
public
class
ReversibleArrayList<T>
extends
ArrayList<T> {
public
ReversibleArrayList(Collection<T> c){
super
(c);
}
//获取反向的迭代器
public
Iterable<T> reversed(){
return
new
Iterable <T>(){
public
Iterator<T> iterator() {
return
new
Iterator<T>(){
int
current
= size()-1;
public
boolean
hasNext() {
return
current
>-1;
}
public
T next() {
return
get(
current
--);
}
public
void
remove() {
throw
new
UnsupportedOperationException();
}
};
}
};
}
//两种遍历数组的方法
public
static
void
main(String[] args) {
ReversibleArrayList<String> ra1 =
new
ReversibleArrayList<String>(Arrays.asList(
"I'm a good man"
.split(
" "
)));
//从前往后的遍历
for
(String s:ra1){
System.
out
.print(s+
"\t"
);
}
System.
out
.println();
//从后往前的遍历
for
(String s:ra1.reversed()){
System.
out
.print(s+
"\t"
);
}
System.
out
.println();
}
}
|