4

私はJavaでこのArrayListを持っています -

List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

それを配列に変換するには、list.toArray()メソッドを呼び出しますが、Object[]. これは私が望むものではありません。欲しいMap<String, Object>[]

List.toArray(T[] a); パラメータ化された型では機能しないことを知っています。

Spring フレームワークの batchUpdate メソッドのメソッド シグネチャは次のとおりです。

int[] org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.batchUpdate(String sql, Map<String, ?>[] batchValues)

Map オブジェクトの配列を作成できない場合、Spring がそれを使用するのはなぜですか? では、この方法をどのように使用すればよいのでしょうか。

4

6 に答える 6

3

簡単に言えば、具体的なパラメーター化された型の配列を作成することはできません。これは、何が起こっているかについてのかなり良い説明です。Spring 型は本質的には と言うのと同じMap batchValuesです。パラメータの型はドキュメント専用です。Java 型システムのこの大きな穴は、パフォーマンスとのトレードオフです。

于 2012-06-07T05:10:23.483 に答える
2

これを試して、

 Map<String,Object>[] ar=list.toArray(new HashMap[list.size()]);
于 2012-06-07T04:56:46.677 に答える
1

このようにしてください:

Map<String, Object> [] mp = new HashMap[list.size()]; 
list.toArray(mp); 

この答えはうまくいきます。私はそれをテストしました。

私の完全なテストコードは次のとおりです。

import java.util.*;
public class Test {

    public static void main (String [] args) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("Hello", "World");
        ArrayList<Map<String, Object>> list = new ArrayList<Map <String, Object>>();
        list.add(map);

        Map<String, Object> [] mp = new HashMap[list.size()]; 
        list.toArray(mp);   
        System.out.println(mp[0]);    // prints out {Hello=World}
    }
}
于 2012-06-07T04:58:34.013 に答える
1

次のように試すことができます:

Map<String, Object> [] mp = list.toArray(new HashMap[list.size()]);
于 2012-06-07T04:54:33.163 に答える
0

HashMap [] map = list.toArray(new HashMap [0]);

于 2012-06-07T04:59:12.190 に答える
-2

あなたはそれをすることはできません。

List.toArray(T[] a) が唯一のオプションですが、実行時に保持されないため、パラメーター化された型では機能しません。

于 2012-06-07T04:55:28.250 に答える