[英]How to iterate over object array from hashmap
I have two hashmap of type我有两个 hashmap 类型
Hashmap<String,Object[]> hasOne = new Hashmap<String,Object[]>();
Hashmap<String,Object[]> hasTwo = new Hashmap<String,Object[]>();
I've added values in both of them,我在它们中都添加了值,
hasOne.put("anyKey", new Object[1,"Two",3.14]);
hasTwo.put("anyKey", new Object[1,"Two"]);
My requirement is I need to compare values from the object array of both hashmaps and need to print missing data from the object array of the second hashmap ( Ex. 3.14 is missing in the second array on comparing new Object[1,"Two",3.14]
&& new Object[1,"Two"]
).我的要求是我需要比较两个哈希图的 object 数组中的值,并且需要打印第二个 hashmap 中的object数组中的缺失数据(例如,比较new Object[1,"Two",3.14]
&& new Object[1,"Two"]
)。
Using Arrays.asList(hasOne.get("anyKey"));
使用Arrays.asList(hasOne.get("anyKey"));
// will get details of object array but i'm not sure how to iterate over that array. // 将获得 object 数组的详细信息,但我不确定如何迭代该数组。
PFB code snippet PFB 代码片段
Map<String, Object[]> one = new HashMap<String, Object[]>();
Map<String, Object[]> two = new HashMap<String, Object[]>();
one.put("firstArray", new Object[] {1, "Two", 3.14});
two.put("secondArray", new Object[] {1, "Two"});
for(int k=0;k<one.size();k++)
{
System.out.println(Arrays.asList(one.get("firstArray")));
}
Try this.尝试这个。 References I used are:我使用的参考文献是:
// create and insert into maps
Map<String, Object[]> one = new HashMap<String, Object[]>();
Map<String, Object[]> two = new HashMap<String, Object[]>();
one.put("firstArray", new Object[] {1, "Two", 3.14});
two.put("secondArray", new Object[] {1, "Two"});
for(int k=0;k<one.size();k++)
{
List<Object> arrList1 = new ArrayList<>(Arrays.asList(one.get("firstArray"))); // get the value from the map "one" as arrayList
List<Object> arrList2 = new ArrayList<>(Arrays.asList(two.get("secondArray"))); // get the value from the map "two" as arrayList
// System.out.println(arrList1 + " " + arrList2);
arrList1.removeAll(arrList2); // removes all different values as you require
System.out.println(arrList1);
}
I think your requirement is that for each key in the first map you want to find any objects in the value array which are not in the second map:我认为您的要求是,对于第一个 map 中的每个键,您希望在值数组中找到不在第二个 map 中的任何对象:
for (String entry: one.entrySet()) {
for (Object val: entry.getValue()) {
if (Arrays.stream(two.get(entry.getKey()).noneMatch(val::equals))) {
...
}
}
}
You can do all this in nested streams but explicit for
loops are easier to understand.您可以在嵌套流中完成所有这些操作,但显式for
循环更容易理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.