> For the complete documentation index, see [llms.txt](https://educacion.gitbook.io/programacion/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/interfaces-iterable-e-iterator.md).

# Interfaces: Iterable e Iterator

1. Dada a **Pila** implementada mediante a clase Nodo, pidese o seguinte:
   1. Implementa unha clase **App** na que crees unha **Pila**, e engadas como String os seguintes valores: "Programación", "Bases de datos", "Contornos". Proba a recorrer a pila mediante un bucle for-each. ¿Por que non funciona?
   2. Implementa unha clase **IteradorPilas** que poida percorrer as estructuras da cola, que implemente a interface Iterator. Define a clase para que poida existir en un paquete diferente a clase Pila.
   3. Modifica a clase **Pila** para que implemente a interface Iterable. Implementa o método iterator() para que devolva un iterador de colas.
   4. Reescribe o método **toString()** empregando o iterador e os seus métodos para percorrer os Nodos e mostrar os datos con un formato personalizado
   5. Tenta percorrer a **Pila** mediante un for-each na clase App, ¿Por que agora funciona? Fai unha chamada ao método toString() e verifica que funciona.
2. Dada a clase **XestorImpresion** que se implementou encapsulando unha cola mediante a interface Deque e a clase ArrayDeque, pidese o seguinte:
   1. Modifica os tipos de datos empregados a List e ArrayList. Fai os cambios necesarios nos métodos para que o comportamento sexa o mesmo.
   2. Implementa unha **App** na que crees un Xestor de impresión e os seguintes documentos. Engade os documentos ao xestor
   3. Modifica o método **toString()** para que recorra a cola mediante un bucle for-each e mostre o resultado.
   4. Modifica o método imprimir para que recorra a cola mediante un bucle for-eache  elimine o elemento mediante unha chamada ao método **remove().** ¿Cal é o resultado de imprimir de esta forma?
   5. Modifica o método imprimir para que recorra a cola mediante un iterador e elimine o elemento mediante unha chamada ao método remove. ¿Cal é o resultado de imprimir de esta forma?

```java
XestorImpresion xestor = new XestorImpresion();
Documento d1 = new Documento("informe",TipoDocumento.DOCX, 2000);
Documento d2 = new Documento("informeDireccion",TipoDocumento.PDF, 3000);
Documento d3 = new Documento("Marketing",  TipoDocumento.PPT, 20);
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://educacion.gitbook.io/programacion/exercicios-java/ud6-exercicios/interfaces-iterable-e-iterator.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
