使用Java在LinkedHashMap中按值获取键

时间:2017-03-30 00:27:13

标签: java linkedhashmap

我有一个很大的LinkedHashMap<Integer,<List<String>>

例如:

<86, ["abc","def","xyz"]>  
<32, ["ugy","oop","bbb"]>  
<..., ...........]>

我想要的是当用户键入逗号分隔的字符串(例如“abc,oop,bbb”)时,我想打印出密钥。在这些情况下,键是 86,32,32 。我可以使用 .split(“”); 将String separete处理成一个数组,但我不知道搜索这些字符串的最简单方法是什么?

1 个答案:

答案 0 :(得分:0)

我会使用整数映射来设置而不是列表,因为使用集合会对用户输入进行检查而不考虑订单相对容易。对列表进行相同的检查会更难。

public Integer getKey(Map<Integer, Set<String>> map, String input) {
    String[] parts = input.split(",");
    for (Map.Entry<Integer, Set<String>> entry : map.entrySet()) {
        Integer key = entry.getKey();
        Set<String> value = entry.getValue();
        if (value.size() != parts.length) {
            continue;
        }
        int counter = 0;
        for (String part : parts) {
            if (value.contains(part)) {
                ++counter;
            }
            else {
                break;
            }
        }
        if (counter == value.size()) {
            return key;
        }
    }

    return null;
}