Guest User

Untitled

a guest
Jul 17th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.30 KB | None | 0 0
  1. O problema
  2.  
  3. A iteração é uma forma especial de repetição em que executamos alguma lógica sobre um elemento de um conjunto. Para tipos primitivos como inteiros a iteração é um processo inerente suportado pela própria linguagem de programação e em ultima análise ao próprio computador já que nada é mais que uma soma (ou subtração).
  4. 1
  5. 2 for ( int i = 0 ; i < MAXIMO ; i++ ){
  6. 3 // trabalha com i
  7. 4 }
  8. Código 1:
  9.  
  10. Se temos uma agregação de objetos, normalmente utilizaríamos um array para poder acessar cada elemento.
  11. 1
  12. 2 Object [] array = new Object [ 10 ]
  13. 3 for ( int i = 0 ; i < array.length ; i++ ){
  14. 4 Object obj = array [ i ] ;
  15. 5 // trabalha com obj
  16. 6 }
  17. Código 2:
  18.  
  19. Utilizando array como forma de agrupar os elementos a iteração é simples e semelhante à de primitivos. ( na realidades ainda estamos iterado sobre o inteiro i) Mas e quando os elementos não estão agrupados em um array?
  20. A solução
  21.  
  22. O padrão propõe que se utilize uma interface para controlar a iteração. O objeto que implementar esta interface conhece a seqüência do grupo e mantém uma referencia ao elemento atual de forma que possa ser utilizado de forma semelhante à iteração em um array. Por exemplo:
  23. 1
  24. 2 ObjectGroup groupOfObjects = new ObjectGroup () ;
  25. 3 Iterator it = Iterator.iteratorFor ( groupOfObjects ) ;
  26. 4
  27. 5 while ( it.hasMore () ){
  28. 6 Object obj = it.current () ;
  29. 7 // trabalha com obj
  30. 8 }
  31. Código 3:
  32. Como funciona
  33.  
  34. A interface Iterator é simples. Um método para pegar objeto corrente e um método para sabermos se chegámos ao fim da seqüência. Contudo a implementação de um iterador tem algumas nuances importantes.
  35. Conjuntos Vazios
  36.  
  37. Se o nosso iterador nos retorna a posição corrente, ele tem que obter o elemento corrente assim que é criado. Se estivermos iterando sobre um conjunto vazio é impossível obter o primeiro elemento do conjunto. Dessa forma o elemento corrente terá que ser null. Isto representa vários problemas práticos.
  38. O primeiro é que retornar null força a constante verificação se o elemento retornado é nulo. É uma forma muito chata de usar um iterador pois seriamos obrigados a escrever sempre algo como :
  39. 01
  40. 02
  41. 03 Iterator it = …
  42. 04
  43. 05 while ( it.hasMore () ){
  44. 06 Object obj = it.current () ;
  45. 07 if ( obj != null ){
  46. 08 // trabalha com obj
  47. 09 }
  48. 10 }
Add Comment
Please, Sign In to add comment