1

リストからデータを取得しようとしていますが、データの取得中に問題に直面しています。

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

ここで、validationResults に追加されたデータは次のようになり、errorFieldList のサイズは Id と type を持つ 2 です。

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);

つまり、あなたObjectList<Field>です。したがって、次のように簡単に使用できます。

objField.get(i);

値を取得するにiは、繰り返し処理するインデックスはどこにありますか。ただし、2 番目のループでList<Field>toをキャストしようとするため、コードはおそらくコンパイルされません。List<Map<String, Object>>for

簡単に言えば、コードを作り直すと、 AMapにはキーの getter メソッドがあり、 aSetを反復する必要があります。まず、必要なデータ構造を確認してください。あまり深く巣を作らないでください。

于 2012-10-05T11:32:46.023 に答える
0

List< Map< String, Object>> objFieldtype の要素を持つ 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 に答える