Java Json文件具有相同键值时如何使用HashMap

Java Json文件具有相同键值时如何使用HashMap,java,list,hashmap,Java,List,Hashmap,我的json文件看起来像这样[实际上它有更多,我只是放了2个块为例] [{ "answerValue": "2021-02-01", "parentId": "Policy", "instance": 1, "fieldId": "PolicyEffectiveDate" },

我的json文件看起来像这样[实际上它有更多,我只是放了2个块为例]

[{
        "answerValue": "2021-02-01",
        "parentId": "Policy",
        "instance": 1,
        "fieldId": "PolicyEffectiveDate"
    },
    {
        "answerValue": "2012",
        "parentId": "Insured",
        "instance": 1,
        "fieldId": "DateBusinessStarted"
    }
]
我想将它们存储在HashMap中并打印它们

public void MapCheck() {

        Map<String, Object> dataMap = new HashMap<>();
        List<Map> lstMap = new ArrayList<>();


        dataMap.put("answerValue:", "2021-02-01");
        dataMap.put("parentId:", "Policy");
        dataMap.put("instance:", 1);
        dataMap.put("fieldId:", "PolicyEffectiveDate");
        lstMap.add(dataMap);

        dataMap.put("answerValue:", "Assurestart LLC");
        dataMap.put("parentId:", "Insured");
        dataMap.put("instance:", 1);
        dataMap.put("fieldId:", "Business_Name");
        lstMap.add(dataMap);

        System.out.println(lstMap);
    }


    public static void main(String[] args) {
        Test t = new Test();

        t.MapCheck();
    }
}
实际值:正在打印,最后一个值为两次

[{parentId:=Insured, fieldId:=Business_Name, answerValue:=Assurestart LLC, instance:=1}, {parentId:=Insured, fieldId:=Business_Name, answerValue:=Assurestart LLC, instance:=1}]

如何使其打印2个不同的值?提前感谢您的时间和想法。

您应该为列表中的第二个地图创建一个新地图:

    Map<String, Object> dataMap = new HashMap<>();
    List<Map<String, Object>> lstMap = new ArrayList<>();


    dataMap.put("answerValue:", "2021-02-01");
    dataMap.put("parentId:", "Policy");
    dataMap.put("instance:", 1);
    dataMap.put("fieldId:", "PolicyEffectiveDate");
    lstMap.add(dataMap);

    dataMap = new HashMap<>(); // create a new map!
    dataMap.put("answerValue:", "Assurestart LLC");
    dataMap.put("parentId:", "Insured");
    dataMap.put("instance:", 1);
    dataMap.put("fieldId:", "Business_Name");
    lstMap.add(dataMap);

众所周知,HashMap是一种基于唯一键和值对属性的数据结构。 在上面的示例中,当您执行dataMap.put(“answerValue:,“2021-02-01”)时;它将该键的值保存在HashMap中。但是,当您执行时,dataMap.put(“answerValue:,“Assurestart LLC”);第二次,它将覆盖“answerValue:”键的值,因为它已经存在

更好的方法是创建一个可以包含所有这些数据的新类,然后您可以决定使用一个唯一的键来存储这些数据。因此,您的值将是一个包含整个数据块的对象。 比如说,

public class MyData {
private String answerValue;
private String parentId;
private Integer instance;
private String fieldId;

//Setters and getters
...

}

您应该为第二个条目创建一个新映射,而不是覆盖第一个条目的值。加

dataMap = new HashMap<>();
dataMap=newhashmap();

将第一个条目添加到列表后。

您正在列表中放置对同一哈希映射的两个引用。只需添加
dataMap=newhashmap()add
之后进行code>,以便为第二个元素创建新映射。
public class MyData {
private String answerValue;
private String parentId;
private Integer instance;
private String fieldId;

//Setters and getters
...

}
dataMap = new HashMap<>();