使用Java在LinkedHashMap中按值获取键

使用Java在LinkedHashMap中按值获取键,java,linkedhashmap,Java,Linkedhashmap,我有一个大的LinkedHashMap,我会使用整数到集合的映射,而不是列表,因为使用集合可以相对容易地检查用户输入,而不考虑顺序。对列表进行同样的检查会更加困难 public Integer getKey(Map<Integer, Set<String>> map, String input) { String[] parts = input.split(","); for (Map.Entry<Integer, Set<String>

我有一个大的
LinkedHashMap,我会使用整数到集合的映射,而不是列表,因为使用集合可以相对容易地检查用户输入,而不考虑顺序。对列表进行同样的检查会更加困难

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;
}
public Integer getKey(映射映射,字符串输入){
String[]parts=input.split(“,”);
对于(Map.Entry:Map.entrySet()){
整数key=entry.getKey();
Set value=entry.getValue();
if(value.size()!=parts.length){
继续;
}
int计数器=0;
用于(字符串部分:部分){
if(值包含(部分)){
++计数器;
}
否则{
打破
}
}
如果(计数器==value.size()){
返回键;
}
}
返回null;
}

如果您只想检查输入的所有字符串是否都出现在地图中列表的某个位置,那么我认为该列表使用的数据结构是错误的。您还想考虑顺序吗?也就是说,
abc,def
def,abc
相同吗?我应该使用哪一种?也就是说,秩序就是物质。如果字符串是
abc,ugy
程序应该打印出
86,32
,但如果字符串是
ugy,abc
程序应该打印出
32,86
,也许使用集合更有意义。然后,您可以迭代用户的输入并进行检查
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;
}