如何搜索存储在哈希图中的匹配对?

时间:2019-03-27 19:22:30

标签: java javafx linkedhashmap

我需要搜索存储在LinkedHashMap中的匹配值对。

我尝试了以下代码,但是存在任何值都为true的情况,但是我只希望当相应的值与键值匹配时返回true。

bt2.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        try {   
            if(CheckValueExample.checkRelationship(txtKey.getText(),txtValue.getText())==true)      
                System.out.println("Pair Match");
            else
                System.out.println("No-Pair Match");
        } catch (Exception ex) {
            Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
});

匹配对的方法:

public static boolean checkRelationship(String key, String value) {
    HashMap<String, String> hashmap = new LinkedHashMap<String, String>();

    // Adding Key and Value pairs to HashMap
    hashmap.put("Bus","Land_Vehicle");
    hashmap.put("SchoolBus","Bus");
    hashmap.put("Truck","Land_Vehicle");
    hashmap.put("Land_Vehicle","Vehicle");

    boolean flag=false;
    if(hashmap.containsKey(key)&&hashmap.containsValue(value))
        flag=true; 
    else
        flag=false;

    return flag;
}

假设输入的键是“ Bus”,输入的值是“ Land_Vehicle”;只有这样才能返回true。

执行此操作的任何其他替代方法也很明显,基本上我必须匹配存储在json文件中的对。

1 个答案:

答案 0 :(得分:4)

只需使用hashmap.containsKey(key) && hashmap.get(key).equals(value)来检查关系。

它获取key的值(如果存在)并将其与给定的value进行比较。

这是完整的方法:

public static boolean checkRelationship(String key, String value) {
    return hashmap.containsKey(key) && hashmap.get(key).equals(value);
}

您还应该只初始化HashMap一次(例如,在static {}块中),而不是每次都调用该方法。