Duvida sobre uma questão.[RESOLVIDO]

public static Iterator reverse(List list) { 12. Collections.reverse(list); 13. return list.iterator(); 14. } 15. public static void main(String[] args) { 16. List list = new ArrayList(); 17. list.add("1"); list.add("2"); list.add("3"); 18. for (Object obj: reverse(list)) 19. System.out.print(obj + ", "); 20. }

Esse codigo da um erro de compilaçao na linha 18, pq o método reverse retorna um iterator como o foreach atribui a uma variavel o elemento corrente de uma lista, nao teria como acontecer essa atribuiçao na linha 18 pois o iterator não tem esses elementos.

Pessoal minha conclusão esta certa ou errada sobre este exercicio? Ou to errado?

vc só pode utilizar o foreach para interar arrays e objetos que implementam a interface Iterable…
o método reverse retorna um Iterator e Iterator não implementa a interface Iterable…

em List todos implementam Iterable?

List implementa Iterable…

hum ok, Set implementa ou n?

Set tb implementa…

Em geral são, List e Set, ou Map e algo mais entra tb?

acho que Map não implementa Iterable…
no geral são List e Set…

Vlw vmsb :thumbup:

Map não implementa. Porém, ele tem os métodos
values(), keySet() e entrySet()

Esses três método retornam sets, que implementam.

Collection implementa Iterable. Por consequencia, List e Set, BeanContextSupport e BeanContextServicesSupport também.