
Ayuda ejercicio JAVA - Iteradores y Colecciones
Publicado por Jorge (3 intervenciones) el 25/02/2022 19:23:34
Buenas tardes,
Tengo un ejercicio en Java que no consigo ver cómo resolverlo. En el ejercicio nos piden resolverlo empleando únicamente las clases iteradoras.
Me piden crear una clase llamada IteracionColecciones, esta clase tendrá dos métodos estáticos denominados:
- frecuencia: public static <E> int frecuencia(Collection<E> c, Object o)
- maximo: public static <E> E maximo(Collection<E> c)
El primer método devuelve la frecuencia (número de apariciones) de un objeto en una colección. Las comparaciones entre elementos deben realizarse con el método equals siempre que sea posible.
La resolución a este método ha sido la siguiente:
public static <E> int frecuencia(Collection<E> c, Object o) {
Iterator<?> it = c.iterator();
int contador = 0;
Object elemento = null;
while(it.hasNext()) {
elemento = it.next();
//No es posible realizar la comparación cuando se trata de un null
if(elemento != null) {
if(elemento.equals(o)) {
contador++;
}
}
}
return contador;
}
El segundo método calcula el máximo, suponiendo que los objetos a recorrer y comparar implementan la interfaz Comparable.
En este caso no consigo ver como realizar la comparación para obtener el máximo, ya que la colección puede ser de diferentes tipos y por tanto entiendo que debería resolverlo de manera genérica.
De momento lo que tengo hecho es esto:
public static <E> E maximo(Collection<E> c) {
Iterator<?> it = c.iterator();
Object actual = null;
E max = null;
Object lista = c.toArray();
while(it.hasNext()) {
actual = it.next();
}
return max;
}
Agradezco cualquier ayuda para poder avanzar...
Adjunto capturas de la clase a construir y de la clase test que verificaría el funcionamiento.


Tengo un ejercicio en Java que no consigo ver cómo resolverlo. En el ejercicio nos piden resolverlo empleando únicamente las clases iteradoras.
Me piden crear una clase llamada IteracionColecciones, esta clase tendrá dos métodos estáticos denominados:
- frecuencia: public static <E> int frecuencia(Collection<E> c, Object o)
- maximo: public static <E> E maximo(Collection<E> c)
El primer método devuelve la frecuencia (número de apariciones) de un objeto en una colección. Las comparaciones entre elementos deben realizarse con el método equals siempre que sea posible.
La resolución a este método ha sido la siguiente:
public static <E> int frecuencia(Collection<E> c, Object o) {
Iterator<?> it = c.iterator();
int contador = 0;
Object elemento = null;
while(it.hasNext()) {
elemento = it.next();
//No es posible realizar la comparación cuando se trata de un null
if(elemento != null) {
if(elemento.equals(o)) {
contador++;
}
}
}
return contador;
}
El segundo método calcula el máximo, suponiendo que los objetos a recorrer y comparar implementan la interfaz Comparable.
En este caso no consigo ver como realizar la comparación para obtener el máximo, ya que la colección puede ser de diferentes tipos y por tanto entiendo que debería resolverlo de manera genérica.
De momento lo que tengo hecho es esto:
public static <E> E maximo(Collection<E> c) {
Iterator<?> it = c.iterator();
Object actual = null;
E max = null;
Object lista = c.toArray();
while(it.hasNext()) {
actual = it.next();
}
return max;
}
Agradezco cualquier ayuda para poder avanzar...
Adjunto capturas de la clase a construir y de la clase test que verificaría el funcionamiento.


Valora esta pregunta


0