2008-10-13 15 views
7

Tengo el siguiente problema en mis Estructuras de datos y resolución de problemas utilizando Java libro:¿Imprime artículos en cualquier colección en orden inverso?

escribir una rutina que utiliza las Colecciones API para imprimir los artículos en cualquier colección en orden inverso. No use un ListIterator.

No lo voy a poner aquí porque quiero que alguien haga mi tarea, ¡parece que no entiendo exactamente lo que me está pidiendo que codifique!

Cuando me pide que escriba una 'rutina', ¿está buscando un único método? Realmente no entiendo cómo puedo hacer que un solo método funcione para todos los diversos tipos de colecciones (lista enlazada, cola, pila).

Si alguien pudiera orientarme en la dirección correcta, lo agradecería enormemente.

Respuesta

18

Independientemente de la cuestión no tiene mucho sentido que la mitad de las colecciones no tienen pedidos gstable de tener-ordenamiento fijo (es decir TreeSet o PriorityQueue), puede utilizar la siguiente declaración para imprimir el contenido de una colección con el fin natural inversa:

List temp = new ArrayList(src); 
Collections.reverse(temp); 
System.out.println(temp); 

me esencia se crea una lista matriz como listas son la única estructura que puede ser reordenada arbitrariamente. Pasa la colección src al constructor que inicializa la lista conj el contenido de src en el orden natural de la colección. Luego pasas la lista a las Colecciones .reverse() método que invierte la lista y finalmente la imprime.

+0

Collections.reverse returns void ... –

+0

uy ... mi mal - corrigió la respuesta – ddimitrov

0

Bueno, podría tener una rutina que delegue en otras rutinas según el tipo de entrada, sin embargo, no estoy seguro de que haya un tipo de colección lo suficientemente genérico que pueda abarcarse en un solo argumento. Supongo que podrías usar la sobrecarga de métodos (tener múltiples métodos con el mismo nombre, pero aceptar diferentes argumentos).

Eso técnicamente podría contar como 1 rutina (todas tienen el mismo nombre).

2

En primer lugar, creo que le está pidiendo que escriba un método. Me gusta:

void printReverseList(Collection col) {} 

Luego hay muchas formas de hacerlo. Por ejemplo, solo utilizando la API de recopilación, use el método toArray y use un ciclo for para imprimir todos los elementos desde el final. ¿Tener sentido?

En cuanto a las diversas clases que utilizan la interfaz de Colección, funcionará automáticamente para todas ellas ya que deben implementar la interfaz (siempre que lo implementen de una manera sensata;).

+0

muchas gracias por la idea – VeePee

+0

no hay problema - buena suerte. – AdamC

0

No sé mucho de Java, pero teniendo en cuenta la "API de colecciones" Me imagino que todos los objetos implementen una interfaz que podría iterar a través de alguna manera. supongo que todos podrían tener un itemAtIndex (int index) y length() o un método similar que podrías usar.

You might want to read this.

Cuestiones relacionadas