
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()) {
}
}
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


0