如何为HashMap创建一个删除方法



我目前正在编写员工商店,我需要能够删除商店的内容。

我该怎么做?

我已经有一个使用密钥删除它的删除方法。 但是当我在互联网上找到这个代码时,我不知道如何使用它。

这是我的代码:

主应用

public class MainApp
{
    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();
        Store.clear();
        Store.print();
        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();
        Store.remove();

    }
}

员工商店

//Imports.
import java.util.HashMap;
//********************************************************************
import java.util.Map;
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 obj)
    {
        map.put(obj.getEmployeeName(), obj);
    }
//********************************************************************
//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());
        }
    }

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

}

员工

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


}

您的EmployeeStore使用HashMap来存储员工。每个员工在地图中都由其姓名标识。要删除员工,您只需调用EmployeeStore.remove(String employeeName)

EmployeeStore employeeStore = new EmployeeStore();
employeeStore.add(new Employee ("James O' Carroll", 18,"hotmail.com"));
employeeStore.add(new Employee ("Andy Carroll", 1171,"yahoo.com"));
employeeStore.add(new Employee ("Luis Suarez", 7,"gmail.com"));
// Remove a certain employee
employeeStore.remove("Andy Carroll");
// Remove all employees
employeeStore.clear();

您应该注意两件事:

1 - 当前实现不允许两个或更多员工具有相同的名称,因为这些名称在映射中用作键。

2 - 调用 remove 方法时,必须提供确切的名称,因为 Java 中的String相等性区分大小写。

您可能还想看看 Map .

A.为什么不使用HashMap的删除方法来解决这个问题?
B.此外,也许您想通过某些标准执行删除 - 为此,您必须在地图上迭代,找到相关条目,获取其密钥,并调用 remove 如 A
部分所述

最新更新