Pen*_*826 2 java search hashmap
我需要搜索方法的hashmap,我不知道如何做到这一点.我也试图做一个编辑方法,我认为我需要这个方法.我的hashMap用于存储员工数据.我有MainApp,Employee类和一个EmployeeStore类.有人可以帮忙吗?
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("Andy Carroll");
Store.print();
}
}
//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 + "]";
}
//********************************************************************
}
Run Code Online (Sandbox Code Playgroud)
由于这是家庭作业,我只会指导你.
您有两种选择:
首先是创建其他地图,映射id- Employee和email- Employee然后在添加新员工时填充所有三个地图.获得员工需要在其中一个地图上使用Map.get(key)方法.
其次,好像更要适合你的需要,选择是检索从地图中的所有值-使用Map.values() ,在它们之间迭代(使用的foreach),并检查id或email给员工的是,你一直在寻找一个-用object.equals(object2)方法.
最后一件事 - 尝试编写干净的代码,所以要精确命名 - 代替:
public void add(Employee obj)
{
map.put(obj.getEmployeeName(), obj);
}
Run Code Online (Sandbox Code Playgroud)
尝试以下:
public void add(Employee employee)
{
map.put(employee.getEmployeeName(), employee);
}
Run Code Online (Sandbox Code Playgroud)
它确实有所作为,相信我:)
编辑:
回到命名建议 - 当你有类命名时,将Employee其冗余命名为带有单词的方法Employee- 正如你所做的那样employee.getEmployeeName().
很明显,你想要获得empoyee的名字,而不是他的狗,也不是沙发:) employee.getName()(获得名为name的字段的值- 而不是myName或employeeName)是最简单的,最好的想法,你应该有:)