从集合中获取数据的问题

时间:2012-10-05 10:51:52

标签: java arraylist

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

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

2 个答案:

答案 0 :(得分:3)

您的代码非常难以阅读,并且包含许多不一致之处。特别是在构造函数中,您将validationResults声明为

Map<Object, Set<String>> validationResults

但在您的介绍中,您将其声明为

List<Field> errorFieldList;
Set<String> formValidationResult = new HashSet<String>();
validationResults.put(errorFieldList, formValidationResult);

表示您的ObjectList<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);
    }