在我的HashMap中搜索特定键(在本例中为名称)时,它返回存储在HashMap中的所有值,而不仅仅是我所追求的。

搜索功能代码:

if (e.getSource()==btnSearch) {

    Set setSearch = hmap.entrySet();
    Iterator iterator = setSearch.iterator();
    while(iterator.hasNext()) {
         Map.Entry mentrySearch = (Map.Entry)iterator.next();
         if(hmap.containsKey(txtSearch.getText())){
             txtOutput.append(" Search Returned Student " + mentrySearch.getKey() + " and their mark was: " + mentrySearch.getValue() + "\n");
         } else {
             txtOutput.append(" Student not found. \n");
         }
    }
}


我是Java的新手,所以这个小细节让我很烦,因为我的程序已完成90%。我有一个删除功能,它确实可以正常工作,并且只删除所选的一个键。

最佳答案

您正在循环访问整个Map条目的循环内搜索键(这就是对hmap.entrySet()进行迭代的意思)。如果您只需要搜索一个键,就摆脱循环。

所有你需要的是 :

     if(hmap.containsKey(txtSearch.getText())){
         txtOutput.append(" Search Returned Student " + txtSearch.getText() + " and their mark was: " + hmap.get(txtSearch.getText()) + "\n");
     } else {
         txtOutput.append(" Student not found. \n");
     }


或者只是将hmap.get(txtSearch.getText())分配给某个变量(我不确定该变量应该是哪种类型),然后检查它是否为null。

10-04 11:04