for (int i=0;i<detailTempList.size();i++){ Applysourcepooldetail detailTemp =detailTempList.get(i); String inputField = detailTemp.getInputfield(); String inputValue = detailTemp.getInputvalue(); if (inputValue.contains("[")&&inputValue.contains("]")){ String arr[] = inputValue.split("//,"); // String arr[] = inputValue.split(""); String fieldArr[] = inputField.split("//,"); detailMap.put(fieldArr,arr); }else { detailMap.put(inputField,inputValue); } // detailMap.put(inputField,inputValue); } if里的detaiMap为<String,String>,detaimap.put处放数组,会报错
时间: 2024-02-14 10:05:05 浏览: 116
根据您提供的代码和问题描述,我猜测您的问题是:在 if 语句中,如果 inputValue 包含 "[" 和 "]",则将一个数组放入 detailMap 中,否则将一个键值对放入 detailMap 中。但是,当 inputValue 包含 "[" 和 "]" 时,您使用 `detailMap.put(fieldArr,arr)` 将一个数组放入 detailMap 中时会报错。
如果我猜测正确,那么问题可能出在 `detailMap` 的类型上。您在 if 语句外声明了一个 `detailMap`,并将其类型设置为 `<String, String>`,这意味着该 Map 只能存储 String 类型的键和值。当 inputValue 包含 "[" 和 "]" 时,您尝试将一个 String[] 类型的值放入 `detailMap` 中,这会导致类型不匹配的错误。
要解决这个问题,您可以考虑将 `detailMap` 的类型更改为 `<String, Object>`,这样它就可以存储任何类型的值,包括 String 和 String[]。修改后的代码如下:
```
Map<String, Object> detailMap = new HashMap<>();
for (int i = 0; i < detailTempList.size(); i++) {
Applysourcepooldetail detailTemp = detailTempList.get(i);
String inputField = detailTemp.getInputfield();
String inputValue = detailTemp.getInputvalue();
if (inputValue.contains("[") && inputValue.contains("]")) {
String arr[] = inputValue.split("//,");
String fieldArr[] = inputField.split("//,");
detailMap.put(fieldArr, arr);
} else {
detailMap.put(inputField, inputValue);
}
}
```
希望这可以帮助您解决问题。
阅读全文