1

我正在尝试从列表中获取数据,但在获取数据时遇到了一些问题。

List<Field> errorFieldList;
Set<String> formValidationResult = new HashSet<String>();

这里添加到validationResults的数据是这样的,errorFieldList大小是两个有Id和type

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 中获取数据。

4

2 回答 2

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循环中强制转换。

简而言之:重新编写代码,AMap具有键的 getter 方法,并且Set需要迭代。首先检查您需要什么数据结构。不要筑巢太深。

于 2012-10-05T11:32:46.023 回答
0

List< Map< String, Object>> objField会返回一个包含 type 元素的 List Map<String, Object>。要从此使用中获得价值:

    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);
    }
于 2012-10-05T11:50:50.763 回答