我试图从列表中获取数据,但在获取数据时遇到一些问题。
List<Field> errorFieldList;
Set<String> formValidationResult = new HashSet<String>();
此处添加到validationResults的数据类似,而errorFieldList大小为2,具有Id和类型
validationResults.put(errorFieldList, formValidationResult);
public ValidationResponseErrorView(
Map<Object, Set<String>> validationResults, String exceptionMessage) {
if (validationResults.size() > 0) {
for (Map.Entry<Object, Set<String>> entrySet : validationResults
.entrySet()) {
Map<String, Object> fieldResultsMap = new HashMap<String, Object>();
Object objField = entrySet.getKey();
if (objField instanceof List) {
for (int i = 0; i < ((List<Map<String, Object>>) objField)
.size(); i++) {
LOGGER.info("in array list----" + objField);
}
}
}
}
}
我不知道如何从objField中获取数据。
答案 0 :(得分:3)
您的代码非常难以阅读,并且包含许多不一致之处。特别是在构造函数中,您将validationResults声明为
Map<Object, Set<String>> validationResults
但在您的介绍中,您将其声明为
List<Field> errorFieldList;
Set<String> formValidationResult = new HashSet<String>();
validationResults.put(errorFieldList, formValidationResult);
表示您的Object
是List<Field>
。所以现在你可以简单地使用:
objField.get(i);
检索值,其中i
是您迭代的索引。但是:您的代码可能无法编译,因为您尝试在List<Field>
循环中将List<Map<String, Object>>
强制转换为for
。
简单地说:重做代码,A Map
有密钥的getter方法和你需要迭代的Set
。首先检查您需要的数据结构。不要太深。
答案 1 :(得分:0)
List< Map< String, Object>> objField
会返回一个包含Map<String, Object>
类型元素的List。为了从这个用途中获得价值:
Map<String,Object> mapOut = ((List<Map<String, Object>>) objField).get(i);
Set<String> keySet = mapOut.keySet();
Iterator<String> itr = keySet.iterator();
while(itr.hasNext()){
Object outObject = mapOut.get(itr.next());
LOGGER.info("Object"+ outObject);
}