【问题标题】:Search Method for an EmployeeStore. Using HashMapEmployeeStore 的搜索方法。使用哈希映射
【发布时间】:2012-07-01 18:10:35
【问题描述】:

我目前正在申请存储员工详细信息,例如姓名、身份证和电子邮件地址。我正在使用 HashMap 执行此操作。我目前在使用 searchByName、id 和电子邮件地址方法时遇到困难。怎么写呢?

这是我的代码:

//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 + "]";
    }
//********************************************************************





}

【问题讨论】:

  • 您能否尝试通过仅发布相关代码来缩小问题的范围(例如,您可以删除所有不相关的注释代码)?
  • 是的,没问题。对不起,我不知道。我现在就编辑它。
  • 您的具体问题是什么? “请帮我解决这个问题”不是一个可以回答的问题,我们当然不会为您这样做。最适合您尝试自己解决此问题,然后向我们展示您的错误。这就是你学习的方式。
  • @HovercraftFullOfEels 我明白这一点,但我已经看了很长时间了,我无法弄清楚。我不是要求你这样做。我只需要一些指示。
  • ...这不是一个具体的问题。你能缩小你对我们的要求吗?

标签: java search hashmap store


【解决方案1】:

在您的 EmployeeStore 中,您可以添加您提到的各种方法:

  1. searchByName 很容易实现,因为这是您的地图的关键,所以一个简单的 map.get(name) 应该可以解决问题
  2. 对于其他 2 个,您有 2 个选项:
    • 为每种类型的搜索创建一个映射(这样您将并行维护 3 个映射,一个是名称,一个是电子邮件,一个是 ID)。每张地图都将包含相同的员工。您可以像 1 中那样实现搜索。 这更快,但使用更多内存
    • 遍历地图 (for(Employee e : map.values()) {...}) 的值并检查每个员工的电子邮件是否与搜索的值匹配

【讨论】:

  • 我尝试了 map.get(name) 方法,但它对我不起作用,因为我在参数中添加了一些错误。
  • @Pendo826 不确定我是否理解您的评论 - 如果您有类似 map.put("abc", employeeAbc); 的行,那么 map.get("abc"); 将返回 employeeAbc...
  • 即使你不明白这个问题你回答得很好,哈哈
  • @Pendo:"Even though you didn't understand...": 什么鬼?他很好地理解了这个问题,也很好地理解了潜在的问题。
  • @Pendo826 不确定我是否理解您的评论。这就是我所指的!!!
猜你喜欢
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-14
  • 1970-01-01
  • 2017-10-04
  • 2018-10-13
相关资源
最近更新 更多