【发布时间】:2019-08-12 15:24:05
【问题描述】:
我有两个链接的 hashmap (key - String, value = String[]),它们在两个链接的 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
并且它至少应该在第二个链接的哈希映射中
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 数据库中查询的字段。
预期:遍历两个映射并验证根据第一个映射中的键的所有值在第二个映射中是否包含或相等。
【问题讨论】:
-
“或者至少另一个链接的 hashmap 包含值”。也许你应该试试containsValue?
-
@Gaurav Mall - 感谢您的回复,我想知道如何使用 containsValue 从一张地图中获取密钥并检查第二张地图的值。
-
@Gaurav Mall - 这很简单,我希望能够检查第一个映射中的值是否存在于第二个映射中(映射具有相同的键和相同的顺序)。
标签: java arrays comparison linkedhashmap