Java将hashmap的值与arraylist进行比较

Java将hashmap的值与arraylist进行比较,java,arraylist,iterator,hashmap,Java,Arraylist,Iterator,Hashmap,我在这个问题上真的被绊倒了。我不确定这种逻辑是否可行,是否还有其他方法可以实现我的目标 我正在创建一个这样的HashMap List<String> data1 = new ArrayList(); data1.add("valid1"); data1.add("valid2"); List<String> data2 = new ArrayList(); data2.add("valid3"); data2.add("valid4"); Map<String,

我在这个问题上真的被绊倒了。我不确定这种逻辑是否可行,是否还有其他方法可以实现我的目标

我正在创建一个这样的HashMap

List<String> data1 = new ArrayList();
data1.add("valid1");
data1.add("valid2");

List<String> data2 = new ArrayList();
data2.add("valid3");
data2.add("valid4");

Map<String,ArrayList> hashList = new HashMap();
hashList.put("one",data1);
hashList.put("two",data2);
我的文件如下所示:

test1,valid1,check1
test2,valid3,check2
所以我想做的是,检查“token[1]”是否对hashmap的值有效


提前谢谢你

如果要获取令牌的有效密钥,实现目标的最昂贵方法是迭代哈希密钥,而不是迭代该密钥的数组值,并检查其中的任何字符串是否与您的条件匹配

应该是这样的:

String getValidKey(String token, Map<String, List<String>> hashList)  {
    for (String key: hashList.keySet()) {
        for (String valid: hashList.get(key)) {
            if (valid.equalsIgnoreCase(token)) {
                return key;
            }
        }
    }

    return null;
}
String getValidKey(字符串标记,映射哈希列表){
for(字符串键:hashList.keySet()){
for(字符串有效:hashList.get(键)){
if(有效的.equalsIgnoreCase(令牌)){
返回键;
}
}
}
返回null;
}
如果您只需要知道令牌是否有效,这就足够了:

boolean isValid(String token, Map<String, List<String>> hashList)  {
    for (List<String> list: hashList.values()) {
        for (String valid: list) {
            if (valid.equalsIgnoreCase(token)) {
                return true;
            }
        }
    }

    return false;
}
boolean是有效的(字符串标记,映射哈希列表){
for(列表:hashList.values()){
for(字符串有效:列表){
if(有效的.equalsIgnoreCase(令牌)){
返回true;
}
}
}
返回false;
}

将地图转换为列表

List<String> list = new ArrayList<String>(map.values());
检查其是否等于作为hashmap值的列表内容

ArrayList检查;
ArrayList<String> check;
check = your_hash_map.get(token[1]);
if(check != null){System.out.println("Valid");}
check=your_hash_map.get(令牌[1]); 如果(check!=null){System.out.println(“Valid”);}
“对hashmap的值有效…哪个值?您不想检查每个键的每个值吗?顺便说一句:
Map
您可能希望避免原始列表类型。只是澄清一下:您是否试图检查
token[1]
是否等于任何
ArrayList
s中的任何项?是的,我想检查token[1]等于HashMap中每个键中的值。如果令牌[1]等于HashMap中的值,则为true,我想将其存储为HashMap中值的字符串,但它的arrayList
token[1]
是未知键的值,而不是键本身。但我想存储令牌[1]HashMap中的值和相等值。我怎么做呢?因为它是布尔/arraylist类型,我无法将其存储到StringYou在您的问题中没有提到这一点,所以请通过接受答案来结束此问题,并为提到的问题创建一个新的答案
list.contains(token[1])
ArrayList<String> check;
check = your_hash_map.get(token[1]);
if(check != null){System.out.println("Valid");}