我试图比较两张地图,并以list<String[]&gt的形式返回结果,但它没有打印正确的结果。

问题描述 投票:0回答:2

这是我的代码。

public List compareMaps(Map dataMap1, Map dataMap2) {
    List errData = new ArrayList();

    for (Entry<String, String> data1 : dataMap1.entrySet()) {

        if (dataMap2.containsKey(data1.getKey())) {
            if (!dataMap2.get(data1.getKey()).equalsIgnoreCase(data1.getValue())) {
                errData.add(
                        new String[] { data1.getKey(), data1.getValue(), dataMap2.get(data1.getKey()).toString() });
            }
        } else
            errData.add(
                    new String[] { data1.getKey(), data1.getValue(), "No corresponding data found in paperclip" });

    }

    return errData;
}

可能是什么问题?

输出。

set[[Ljava.lang.String;@3578436e, [Ljava.lang.String;@706a04ae, [
java list maps
2个回答
0
投票
for(String[] arr:errData){
      System.out.println(Arrays.toString(arr));
}

0
投票

如果(dataMap2...) Arrays::toString 从结果中打印一个数组。

List<String[]> result = compareMaps(Map.of(...), Map.of(...));
for (String[] data : result) {
    System.out.println(Arrays.toString(data));
}

另外,请确保使用参数化类型而不是原始类型,如下所示。

public List<String[]> compareMaps(Map<String, String> dataMap1, Map<String, String> dataMap2) {
    List<String[]> errData = new ArrayList<String[]>();
    for (Entry<String, String> data1 : dataMap1.entrySet()) {
        if (dataMap2.containsKey(data1.getKey())) {
            if (!dataMap2.get(data1.getKey()).equalsIgnoreCase(data1.getValue())) {
                errData.add(
                        new String[] { data1.getKey(), data1.getValue(), dataMap2.get(data1.getKey()).toString() });
            }
        } else {
            errData.add(
                    new String[] { data1.getKey(), data1.getValue(), "No corresponding data found in paperclip" });
        }
    }
    return errData;
}
© www.soinside.com 2019 - 2024. All rights reserved.