在我的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。