我想将一个字符串与哈希映射的键值进行比较。
private Map<String, Integer> map1= new HashMap<>();
map1.put("User1" , 100);
map1.put("User2" , 200);
map1.put("User3" , 300);
public void test(String user, int size) {
for(String key : map1.keySet()) {
if (key.equals(user)) {
System.out.println("yes");
}else{
System.out.println("no");
}
}
}
但是我的代码无法正常工作,即使用户在地图上,我也没有得到答案,知道是什么问题吗?
我稍微更改了代码,但给出的答案仍然是:
import java.util.*;
public class A1 {
private static Map<String, Integer> map1= new HashMap<>();
public static boolean test(String user, int size) {
for(String key : map1.keySet()) {
if (key.equalsIgnoreCase(user)) {
return true;
}
}
return false;
}
public static void main(String[] args) {
map1.put("User1" , 100);
map1.put("User2" , 200);
map1.put("User3" , 300);
if(test("User1" , 100)){
System.out.println("yes");
}else{
System.out.println("no");
}
}
}
@Jason ty
map1.containsKey(user)
工作。
答案 0 :(得分:0)
public static boolean test(String user, int size) {
for(String key : map1.keySet()) {
if (key.equalsIgnoreCase(user)) {
return true;
}else{
return false;
}
}
return false;
此循环始终在第一次迭代时返回,因此只有在第一个键匹配时才会返回true。
与以下相同:
Iterator<String> it = map1.keySet().iterator();
return it.hasNext() && it.next().equalsIgnoreCase(user);
如果要一直搜索直到找到匹配的键,请在循环内删除return false;
。