从 HashMap 插入和搜索数据

Inserting and searching for data from a HashMap

我的解决方案有问题,我不太明白。如果有人能引导我朝着正确的方向前进并使它正常工作,我将不胜感激。当我调用我的方法时,似乎什么也没有发生。

这里是工作参数的 setter 和 getter:

public class Worker {

private String id;
private String name;
private String location;

public Flight(String id, String name, String location) {
    this.id = id;
    this.name = name;
    this.location = location;
}

public String getID() {
    return id;
}

public void setID(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getLocation() {
    return location;
}

public void setLocation(String location) {
    this.location = location;
}

}

我想在 WorkerDB 上获取工作人员数据 class,并使用处理搜索功能和将新工作人员插入 HashMap 的方法。

public class WorkerDB {

HashMap<Integer, Worker> workers = new HashMap<Integer, Worker>();

public WorkerDB() {
    workers.put(1, new Worker("W01", "John", "Workshop"));
    workers.put(2, new Worker("W02", "Steve", "Office"));
    workers.put(3, new Worker("W03", "Bob", "Gate"));
}

public String InsertWorkerData(String [] workerDataArray) {
    int sizeOfHashMap = Integer.parseInt(workerDataArray[0]);
    workers.put(sizeOfHashMap, new Worker(workerDataArray[1], workerDataArray[2], workerDataArray[3]);
    return "Worker data inserted successfully";     
}

public String searchWorker(String workerID) {
    String search = "Worker with ID: " + workerID + ", not found";
    for (int i = 1; i < workers.size(); i++) {
            if(workers.get(i).getID().equals(workerID)) {
                search = workers.get(i).getID() + " " + workers.get(i).getName() + " " + workers.get(i).getLocation();
            }
        }
    return search;
}

}

这里我只是调用 WorkerDB 中的方法 class。

public class Interface {

public static void main(String[] args) {
    
    WorkerDB workers = new WorkerDB(); 
    String[] testArray = {"4", "W04", "George", "Garage"};
    workers.searchWorker("W01");    
}

}

我认为您的代码中有一些拼写错误:

首先,在您的 Worker class 中,您需要定义构造函数,以便它是 public Worker() 而不是 public Flight():

public Worker(String id, String name, String location) {
    this.id = id;
    this.name = name;
    this.location = location;
}

此外,您的 WorkerDB class:

中的括号放错了
workers.put(sizeOfHashMap, new Worker(workerDataArray[1], workerDataArray[2], workerDataArray[3]));

此外,由于您正在使用 return 语句来 return String,因此我们需要使用 print 语句在我们的主要方法中输出它:

System.out.println(workers.searchWorker("W03"));   

结果:

W01 约翰工作室

此外,由于您从 0 开始,因此您应该一直上升到(并包括)HashMap 的长度,因此请使用 <=:

for (int i = 1; i <= workers.size(); i++) {

我希望这有助于回答您的问题!如果您需要任何进一步的详细信息或说明,请告诉我:)