gpt4 book ai didi

java - 使用 java 根据 LinkedHashMap 中的键与另一个 LinkedHashMap 进行值比较

转载 作者:行者123 更新时间:2023-12-02 01:45:13 25 4
gpt4 key购买 nike

我有两个链接的 HashMap (key - String, value = String[]),它们在两个链接的 HashMap 中具有相同的大小和相同的键,我希望能够根据键,验证一个链接 HashMap 上的值是否等于第二个链接 HashMap 中的相同值(按键)或至少另一个链接 HashMap 包含这些值。

我用键和值填充两个链接的 HashMap ,并将其设置为不同的链接 HashMap 。

HashMap 示例:

键 - 警报 - 值(字符串数组)

0 - Device_UID,Instance_UID,Configuration_Set_ID,Alert_UID
1 - a4daeccb-0115-430c-b516-ab7edf314d35,0a7938aa-9a01-437f-88ac-4b2927ed7665,96,61b68069-9de7-4b85-83cb-8d9f558e8ecb
2 - a4daeccb-0115-430c-b516-ab7edf314d35,0a7938aa-9a01-437f-88ac-4b2927ed7665,12,92757faa-bf6b-4aa3-ba6d-2e57b44f333c
3 - a4daeccb-0115-430c-b516-ab7edf314d35,0a7938aa-9a01-437f-88ac-4b2927ed7665,369,779b3294-2ca3-4613-a413-bf8d4aa05d16

并且它至少应该在第二个链接的 HashMap 中

String rdsColumns="";
for(String key : mapServer.keySet()){
String[] value = mapServer.get(key);
String[] item = value[0].split(",");
rdsColumns="";
for(String val:item){
rdsColumns = rdsColumns.concat(val + ",");
}
rdsColumns = rdsColumns.concat(" ");
rdsColumns = rdsColumns.replace(", ", "");
info(("Query is: "+ returnSuitableQueryString(rdsColumns, key, alertId, deviceId)));
String query=returnSuitableQueryString(rdsColumns, key, alertId, deviceId);
mapRDS.put(key, insightSQL.returnResultsAsArray(query ,rdsColumns.split(","),rdsColumns));
}

其中rdsColumns是我在RDS数据库中查询的字段。

预期:遍历两个映射,并根据第一个映射中的键验证所有值是否包含或等于第二个映射中的值。

最佳答案

这是您正在寻找的代码:

for (String keys : firstMap.keySet()) {
String[] val1 = firstMap.get(keys);
String[] val2 = secondMap.get(keys);

if (Arrays.equals(val1, val2)) {
//return true;
}

ArrayList<Boolean> contains = new ArrayList<>();

for (int i = 0; i < val1.length; i++) {
for (String[] secondMapVal : secondMap.values()) {
List<String> list = Arrays.asList(secondMapVal);

if (list.contains(val1[i])) {
contains.add(true);
break;
} else contains.add(false);
}
}


if (contains.contains(true)) {
//return true; Even a single value matches up
} else {
//return false; Not even a sinle value matches up
}
}

基本上我们这里有一个 HashMap<String, String> 。我们获取这组键并迭代它们。然后我们从这两个集合中取出带有键的值。获得值后,我们比较它们,如果它们相同,我就打印它们匹配。您可以更改此设置并使用其他类型的 HashMap 实现此设置,即使您使用自定义值也是如此。如果我不明白您的问题,请告诉我,我将编辑答案。

关于java - 使用 java 根据 LinkedHashMap 中的键与另一个 LinkedHashMap 进行值比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57464022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com