elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [Solucionado] Redefinir método iterator
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Solucionado] Redefinir método iterator  (Leído 3,777 veces)
mavicadi

Desconectado Desconectado

Mensajes: 20



Ver Perfil
[Solucionado] Redefinir método iterator
« en: 4 Mayo 2013, 01:37 am »

Hola a todos, estoy haciendo una práctica de estructura de datos en Java y me he quedado atascado a la hora de redefinir el método iterator.

La práctica consiste en desarrollar una clase que descienda de AbstractCollection<Integer>. Esa clase tiene que recibir dos enteros, que indican un rango de números enteros(Los enteros que reciben serán el mínimo y el máximo del rango) y a partir de los enteros se debe recorrer la colección desde el mínimo al máximo usando el iterator.

Hay alguien que me pueda ayudar ?!!

PD: No pido una solución, lo necesito un camino al que seguir.

Un saludo.


« Última modificación: 12 Mayo 2013, 01:46 am por mavicadi » En línea

visualfree

Desconectado Desconectado

Mensajes: 201


Ver Perfil
Re: [Ayuda] Redefinir método iterator
« Respuesta #1 en: 4 Mayo 2013, 03:37 am »

Podrias comenzar mostrando tu avance estimado.

Saludos.


En línea

mavicadi

Desconectado Desconectado

Mensajes: 20



Ver Perfil
Re: [Ayuda] Redefinir método iterator
« Respuesta #2 en: 4 Mayo 2013, 19:28 pm »

Ok. Os explico, la clase hereda de AbstractCollection<Integer> y tiene un constructor que recibe dos números enteros, esos números son el máximo y el mínimo.

Código:
public class ColeccionRangoEnteros extends AbstractCollection<Integer> {

public int entero1;
public int entero2;

/*
*  COnstructor que recibe dos enteros.
*/
public ColeccionRangoEnteros(int num1, int num2) {
this.entero1 = num1;
this.entero2 = num2;

}


En la práctica también hay que redefinir size y lo he hecho de la siguiente manera, y me ha funcionado :

Código:
public int size() {
int tamano = 0;

if (this.entero1 < this.entero2) {
for (int i = this.entero1; i <= this.entero2; i++)
++tamano;
} else {
if (this.entero2 < this.entero1) {
for (int i = this.entero2; i <= this.entero1; i++)
++tamano;
}
}

return tamano;
}


Mi problema viene a continuación, cuando debo redefinir Iterator.

Código:
@Override
public Iterator<Integer> iterator() {

//TODO
return null;
}

Para realizar las comprobaciones el profesor nos deja una clase que se encarga de ello. Os pongo aquí una parte del código que hace las comprobaciones.

Código:
public static void compruebaColeccionRangoEnteros( int n ) {
Collection<Integer> c1 = new ColeccionRangoEnteros(0, n);
assert !c1.contains(-1);
assert c1.contains(0);
assert c1.contains(n);
assert !c1.contains(n+1);
}

Bueno, siento si el mensaje ha sido largo y sería de gran ayuda si además encontráis algo que no está debidamente programado.

Un saludo.
« Última modificación: 4 Mayo 2013, 19:34 pm por mavicadi » En línea

mavicadi

Desconectado Desconectado

Mensajes: 20



Ver Perfil
Re: [Ayuda] Redefinir método iterator
« Respuesta #3 en: 6 Mayo 2013, 20:08 pm »

Alguna idea ?
En línea

nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: [Ayuda] Redefinir método iterator
« Respuesta #4 en: 8 Mayo 2013, 05:12 am »

Quizas te sirva...

Código
  1. package ar.com.nicolascof;
  2.  
  3. import java.util.AbstractCollection;
  4. import java.util.Collection;
  5. import java.util.Iterator;
  6.  
  7. public class Main {
  8. public static void main(String[] args) {
  9. check(5);
  10. }
  11.  
  12. private static void check(int n) {
  13. Collection<Integer> c1 = new ColeccionRangoEnteros(0, n);
  14. assert !c1.contains(-1);
  15. assert c1.contains(0);
  16. assert c1.contains(n);
  17. assert !c1.contains(n + 1);
  18. }
  19. }
  20.  
  21. class ColeccionRangoEnteros extends AbstractCollection<Integer> {
  22.  
  23. private Integer[] integers;
  24.  
  25. public ColeccionRangoEnteros(int min, int max) {
  26. if (min >= 0 && max >= 0 && min <= max) {
  27. this.integers = new Integer[max + 1];
  28. for (int i = 0; min <= max; ++i) {
  29. integers[i] = min++;
  30. }
  31. }
  32. }
  33.  
  34. @Override
  35. public Iterator<Integer> iterator() {
  36. return new Iterator<Integer>() {
  37. private int posicion = 0;
  38.  
  39. @Override
  40. public boolean hasNext() {
  41. return posicion < integers.length;
  42. }
  43.  
  44. @Override
  45. public Integer next() {
  46. return integers[posicion++];
  47. }
  48.  
  49. @Override
  50. public void remove() {
  51. }
  52.  
  53. };
  54. }
  55.  
  56. @Override
  57. public int size() {
  58. return integers.length;
  59. }
  60. }

Salu2
« Última modificación: 8 Mayo 2013, 05:19 am por nicolas_cof » En línea

mavicadi

Desconectado Desconectado

Mensajes: 20



Ver Perfil
Re: [Ayuda] Redefinir método iterator
« Respuesta #5 en: 8 Mayo 2013, 15:34 pm »

Muchísimas gracias nicolas_cof, ahora mismo me pondré con ello.

Solo para aclarar, que se me ha olvidado a la hora de poner el mensaje. En la práctica no es necesario guardar los valores intermedios de la colección (para eso usas el array integers verdad? ), simplemente te dan el máximo y el mínimo y la colección será todos los valores que estén en ese rango ( incluidos ellos ).

Muchas gracias otra vez por ayudar!!
En línea

mavicadi

Desconectado Desconectado

Mensajes: 20



Ver Perfil
Re: [Solucionado] Redefinir método iterator
« Respuesta #6 en: 12 Mayo 2013, 01:47 am »

Edito el asunto para ponerlo como solucionado. Me ha funcionado bien.
Gracias!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para insertar una clave en el registro de un método... (SOLUCIONADO)
Scripting
SuperDraco 6 6,632 Último mensaje 3 Diciembre 2009, 19:41 pm
por SuperDraco
como relaciono una calse iterator con una clase lista...
Programación C/C++
.:BlackCoder:. 0 2,068 Último mensaje 19 Noviembre 2011, 02:53 am
por .:BlackCoder:.
Duda iterator // Vector iterator not decrementable
Programación C/C++
cazagavilan 4 2,280 Último mensaje 14 Agosto 2013, 13:17 pm
por frankener1986
List iterator not decrementable
Programación C/C++
kaostias 0 1,221 Último mensaje 2 Noviembre 2013, 11:54 am
por kaostias
[Ayuda]Iterator con saltos
Java
d!lan 0 1,218 Último mensaje 8 Abril 2014, 00:10 am
por d!lan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines