Java - Ayuda con HashMap

 
Vista:
sin imagen de perfil

Ayuda con HashMap

Publicado por felipe (1 intervención) el 20/11/2013 18:01:25
hola, primera ves que escribo algo, soy un novato en la programacion, tengo este problema, espero me puedan orientar.

resulta que tengo una clase estudiante con 2 atributos(nombre y promedio).
ya los tengo ingresados, y me los lista bien, el problema es que un requerimiento es eliminar de la lista a todos los con promedio menor a 4, he intentado hacerlo pero no puedo acceder al entry.getValue().getPromedio();

les dejo la clase con el main.

saludos.

package hashmapejercicio;

import java.text.DecimalFormat;

/**
*
* @author Felipe
*/
public class Estudiante {

private float promedio;
private String nombre;

public Estudiante(String nombre, float promedio){
this.nombre=nombre;
this.promedio=promedio;
}

@Override
public String toString(){
DecimalFormat df = new DecimalFormat("#.#");
return "["+this.nombre+":"+df.format(this.promedio)+"]";

}
public float getPromedio(){
return promedio;
}
public String getNombre(){
return nombre;
}

}



package hashmapejercicio;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
*
* @author Felipe
*/
public class Hash {

public static void main(String[] args) {

HashMap<Byte, ArrayList<Estudiante>> lista = new HashMap<Byte, ArrayList<Estudiante>>();

//1. Generar un numero aleatorio dentro del rango 5 y 10, llamado n.

byte n = (byte) (Math.random() * 5 + 5);

//2.Crear una colecciòn del tipo HadhMap que permita guardar los datos de n cursos(valores del HasgMao).La clave del HashMap
//serà nu nùmero correlativo que indique el nùmero del curso que esta creando.Cada curso cuenta con una colecciòn de estudiantes.
//Cada estudiante cuenta con un nombre y un promedio y el nombre sera ESTUDIANTE 1, ESTUDIANTE 2, etc.

for (byte y = 1; y <= n; y++) {
byte estudiantes = (byte) (Math.random() * 10 + 5);
ArrayList<Estudiante> listae = new ArrayList();
String nombre = "ESTUDIANTE ";

for (byte i = 1; i <= estudiantes; i++) {
String nom = nombre + i;
float promedio = (float) (Math.random() * 6.0 + 1.0);
Estudiante es = new Estudiante(nom, promedio);
listae.add(es);

}
lista.put(y, listae);



}
//3. Mostrar la coleccion del curso

for (Map.Entry<Byte, ArrayList<Estudiante>> ent : lista.entrySet()) {

System.out.println("ID curso: " + ent.getKey() + " - " + "Total Estudiantes: " + ent.getValue().size() + "\n" + "Integrantes curso: " + ent.getValue() + "\n" + "---");

}

//4. Mostrar el o los cursos con mayor nùmero de estudiantes

byte total = 0;

for (Map.Entry<Byte, ArrayList<Estudiante>> ent : lista.entrySet()) {

if (total < ent.getValue().size()) {
total = (byte) ent.getValue().size();

}
}
for (Map.Entry<Byte, ArrayList<Estudiante>> ent : lista.entrySet()) {
if (total == ent.getValue().size()) {
System.out.println("Los cursos con mas alumnos son el: " + ent.getKey() + " con " + total + " Alumnos");
}

}

//5. Eliminar de los cursos todos aquellos estudiantes que tengan un promedio inferior a 4.0

float p = (float)4.0;

for (Map.Entry<Byte, ArrayList<Estudiante>> ent : lista.entrySet()) {

}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jhonnathan Emilio Cardona Saineda

Ayuda con HashMap

Publicado por Jhonnathan Emilio Cardona Saineda (328 intervenciones) el 22/11/2013 18:34:48
Hola,
no puedes hacer esto entry.getValue().getPromedio(); ya que entry.getValue() retorna un ArrayList de los estudiantes, asi que despues del getValue() encontraras los metodos de la clase arrayList como size, etc.
Te dejo como puedes acceder. Saludos, ;-)
1
2
3
4
5
6
7
for (Map.Entry<Byte, ArrayList<Estudiante>> ent : lista.entrySet()) {
			System.out.println("curso"+ent.getKey());
			for(Estudiante e:ent.getValue()){
				System.out.println("promedios:"+e.getPromedio());
			}
 
		}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar