下面错误想不通为什么
public class Question61 {
public static Iterator reverse(List list){
Collections.reverse(list);
return list.iterator();
}
public static void main(String[] args) {
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
for(Object obj:reverse(list))
System.out.println(obj+",");
}
}
为什么把reverse(list)换成list就行了,那个方法返回的不是一个遍历么,为什么会报错呢???
public class Question61 {
public static Iterator reverse(List list){
Collections.reverse(list);
return list.iterator();
}
public static void main(String[] args) {
List list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
for(Object obj:reverse(list))
System.out.println(obj+",");
}
}
为什么把reverse(list)换成list就行了,那个方法返回的不是一个遍历么,为什么会报错呢???
for(Object obj:reverse(list))
错在这句,reverse(list)返回的是一个Iterator而不是一个List
collection必须是数组或是实现了lterable接口的类(例如ArrayList)对象,Iterable接口的实现类可查看api
再看看 增强型for循环语句的使用吧 !
1,方法调用方式
类名.静态方法();如Collections.reverse(list);
对象.方法();如list.add("1");
只有在本类中才可以,省略“类名.”,“对象.”
2,Collections.reverse(list)返回类型是void的
所以他的结果不可以遍历
3,把程序改为下面就是你想要的结果了List<String> list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
//reverse之前,list中的值是"1","2","3"
Collections.reverse(list);
//reverse之前,list中的值是"3","2","1"
for(Object obj:list) {
System.out.println(obj+",");
}