Foros del Web » Programación para mayores de 30 ;) » Java »

Clase StringTokenizer e interfaz Iterator (Clase intermediaria) JAVA

Estas en el tema de Clase StringTokenizer e interfaz Iterator (Clase intermediaria) JAVA en el foro de Java en Foros del Web. A ver, la clase StringTokenizer es una clase del API bastante antigua. Hoy en día existe un interfaz más moderno, el Iteraror, cuyos métodos son ...
  #1 (permalink)  
Antiguo 18/11/2014, 07:53
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 9 años, 5 meses
Puntos: 0
Clase StringTokenizer e interfaz Iterator (Clase intermediaria) JAVA

A ver, la clase StringTokenizer es una clase del API bastante antigua. Hoy en día existe un interfaz más moderno, el Iteraror, cuyos métodos son hasNext() y next(), parecidos a los que tiene StringTokenizer (hasMoreElements() y nextElements().

He creado una clase (ClienteIterator) que espera un iterador para recorrerlo e imprimirlo por pantalla:

Código:
public class ClienteIterator {
	public static void recorreIteracion ( Iterator i) {
		while (i. hasNext ()) {
			System . out . println (i. next ());
		}
	}
}
Lo que quiero es que el ClienteIterator pueda iterar la clase StringTokenizer, pero sin modificarla, tampoco la de ClienteIterator. Supongo que para ello es necesario crear una nueva clase intermediaria que se encargue de conectar a ClienteIterator y StringTokenizer, pero no sé como hacerlo.
  #2 (permalink)  
Antiguo 19/11/2014, 02:07
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Clase StringTokenizer e interfaz Iterator (Clase intermediaria) JAVA

Hola:

Son conceptos distintos. StringTokenizer parte un String en trozos y luego te permite recorrerlo con algo parecido a un Iterator (un Enumeration, más antigua que Iterator). La interfaz Iterator es general y sirve para recorrer colecciones, pero no parte ninguna cadena en trozos.

StringTokenizer está obsoleto, no solo por su interfaz Enumeration, sino porque se aconseja usar en su lugar el método split() de la clase String. Esto devuelve un array de String. En cualquier caso, Iterator tiene método remove() y Enumeration no, por lo que Enumeration sigue usandose como iterador de colecciones que NO se quieren modificar mientras se recorren.

Si quieres hacer una clase intermediaria que conecte ClientIterator y StringTokenizer tienes que hacer una clase similar a esto (este tipo de clase se llama Adaptador o patrón Adaptador)

Código Java:
Ver original
  1. public class Adaptador implements Iterator {
  2.    private StringTokenizer tokenizer=null;
  3.    public Adaptador(StringTokenizer tokenizer) {
  4.         this.tokenizer = tokenizer;
  5.    }
  6.    // Implementa aquí todos los métodos de Iterator (hasNext(), next() y remove())
  7.    // llamando a los métodos equivalentes de tokenizer.
  8. }

pero posiblemente sea mejor que tu ClienteIterator sea un ClienteEnumeration y admite un Enumeration, puesto que no vas a modificar la colección y así puedes pasarle directamente el StringTokenizer.
Se bueno.
__________________
Apuntes Java
Wiki de Programación

Última edición por chuidiang; 19/11/2014 a las 02:12

Etiquetas: clase, iterator, string, stringtokenizer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:52.