比较Java哈希映射键和字符串

时间:2019-05-31 06:05:07

标签: java hashmap

我想将一个字符串与哈希映射的键值进行比较。

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)

工作。

1 个答案:

答案 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;