Método de búsqueda para un EmployeeStore. Usando HashMap

Actualmente estoy creando una aplicación para almacenar detalles de los empleados, como el nombre, la identificación y la dirección de correo electrónico. Estoy haciendo esto usando un HashMap. Actualmente tengo dificultades con los métodos searchByName, id y dirección de correo electrónico. ¿Cómo haría para escribir uno?

Aquí está mi código:

//Imports.
import java.util.Scanner;
//********************************************************************  
public class MainApp
{
    private static Scanner keyboard = new Scanner(System.in);

    public static void main(String[] args)
    {
        new MainApp().start();

    }
    public void start()
    {
        EmployeeStore Store = new EmployeeStore();
        Store.add(new Employee ("James O' Carroll", 18,"hotmail.com"));

        Store.add(new Employee ("Andy Carroll", 1171,"yahoo.com"));

        Store.add(new Employee ("Luis Suarez", 7,"gmail.com"));
        Store.print();
   }
}

//Imports.
import java.util.HashMap;
//********************************************************************
public class EmployeeStore 
{
    HashMap<String, Employee> map;

//Constructor.  
    public EmployeeStore()
    {
        map = new HashMap<String,Employee>();
    }
//********************************************************************
//Hashmap Methods.
//Add to the Hashmap : Employee.
    public void add(Employee employee)
    {

        map.put(employee.getEmployeeName(), employee);
    }
//********************************************************************
//Remove from the Hashmap : Employee.
    public void remove(String key)
    {
      //Remove the Employee by name.
        map.remove(key);
    }
//********************************************************************
//Clear the Hashmap : Employee.
    public void clear()
    {
        map.clear();
    }
    //********************************************************************
//Print the Hashmap : Employee. 
    public void print()
    {
        System.out.println("\n********Employee's in the Company.********");
        for (Employee employee : map.values())
        {
            System.out.println("Employee Name:\t" + employee.getEmployeeName());
            System.out.println("Employee Id:\t" + employee.getEmployeeId());
            System.out.println("E-mail:\t"+ employee.getEmployeeEmail());
        }

    }
    public Employee get(String name){
        return map.get(name);
    }


//********************************************************************  
//********************************************************************


}

//Imports:

//********************************************************************
//Employee Class.
public class Employee
{
//Variables.
    private String employeeName;
    private int employeeId;
    private String employeeEmail;
//********************************************************************  
//Constructor.
    public Employee(String employeeName, int employeeId, String employeeEmail) 
    {
        this.employeeName = employeeName;
        this.employeeId = employeeId;
        this.employeeEmail = employeeEmail;
    }
//********************************************************************
//Getters.
    public String getEmployeeEmail() {
        return employeeEmail;
    }
    public void setEmployeeEmail(String employeeEmail) {
        this.employeeEmail = employeeEmail;
    }
    public String getEmployeeName() {
        return employeeName;
    }
    public int getEmployeeId() {
        return employeeId;
    }
//********************************************************************
//toString method.
    public String toString() {
        return "Employee [employeeName=" + employeeName + ", employeeId="
                + employeeId + ", employeeEmail=" + employeeEmail + "]";
    }
//********************************************************************





}

preguntado el 30 de junio de 12 a las 15:06

¿Puede intentar reducir el alcance de su pregunta publicando solo el código relevante (por ejemplo, podría eliminar todo el código comentado si no es relevante)? -

eso no es problema. Lo siento, no sabía. Lo editaré ahora. -

Cual es tu soluciones ¿pregunta? "Por favor, ayúdenme con esto" no es una pregunta que se pueda responder, y ciertamente no lo haremos por usted. Es mejor que intente resolver esto usted mismo y luego nos muestre sus errores. Así es como aprendes. -

@HovercraftFullOfEels lo entiendo, pero he estado mirando esto durante tanto tiempo y no puedo resolverlo. No te estoy pidiendo que lo hagas. Solo necesito algunos consejos. -

... Esa no es una pregunta específica. ¿Puede reducir lo que quiere de nosotros? -

1 Respuestas

En su EmployeeStore, puede agregar los diversos métodos que menciona:

  1. searchByName es fácil de implementar porque esa es la clave para su mapa, por lo que un simple map.get(name) debería hacer el truco
  2. para los otros 2, tienes 2 opciones:
    • cree un mapa para cada tipo de búsqueda (así mantendrá 3 mapas en paralelo, uno donde la clave es el nombre, otro donde la clave es el correo electrónico y otro donde la clave es la identificación). Cada mapa contendrá los mismos empleados. Y puede implementar la búsqueda como en 1. Esto es más rápido pero usa más memoria
    • bucle sobre los valores del mapa (for(Employee e : map.values()) {...}) y verifique para cada empleado si su correo electrónico coincide con el valor buscado

Respondido el 30 de junio de 12 a las 15:06

Probé el método map.get(name) y no me funciona. Estoy poniendo algo mal en los parámetros. - pendo826

@ Pendo826 no estoy seguro de entender su comentario, si tiene una línea como map.put("abc", employeeAbc); luego map.get("abc"); regresará employeeAbc... - Assylias

Aunque no entendiste la pregunta la respondiste muy bien jajaja - pendo826

@Pendo:"Even though you didn't understand...": ¿Que demonios? Entendió bien la pregunta y entiende bien los problemas subyacentes. - Aerodeslizador lleno de anguilas

@ Pendo826 no estoy seguro de entender tu comentario. a eso me referia!!! - pendo826

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.