2016-06-01 11 views
-3

私はList<HashMap<String,String>>を持っていて、それをjavaのList<Map<String,String>>に変換したいと思います。誰も私にこれを助けることができますか? ありがとうリストを変換する<HashMap <String、String >><map <String、String >> java

+0

Hmm。それらはほとんどの場合すでに十分に互換性があるようです。正確にどこでそれを行う必要がありますか?いくつかのコードを表示してください。 – Thilo

+0

あなたはそれをどう思うのですか?あなたはMapでやりたいことができるHashMapを使って、ほぼすべてを達成することができます。 – Rockstar

+0

これはこのようなものです。 List >を返す別のメソッドがあります。そしてそれを呼び出すと、List >の他のグローバル変数にその変数を代入する必要があります。残念ながら、私はそのメソッドの戻り値の型またはそのpublic変数の型を変更することはできません。だから私はこの変換が必要です。 –

答えて

0

マップの新しいリストを作成するだけで済みます。次に、HashMapのリストを反復して、単純に各オブジェクトをMapのリストに追加します。次のように:

List<HashMap<String, String>> hashMapList = new LinkedList<HashMap<String, String>>(); 
HashMap<String, String> hashMap = new HashMap<String, String>(); 
hashMap.put("Ussain", "Bolt"); 
hashMapList.add(hashMap); 

List<Map<String, String>> mapList = new LinkedList<Map<String, String>>(); 
for (HashMap<String, String> map : hashMapList) { 
    mapList.add(map); 
} 

これはあなたの問題を解決します。

1

あなたが思ったことは簡単です。あなたのオリジナルのリストを

List<Map<String, String>> result = new List<>(); 

すると、ちょうどループして、新しいリストに各項目を追加します:

まず、List<Map<String, String>>を作成

// This for loop basically says "for each item in yourOriginalList..." 
// if you didn't know 
for (HashMap<String, String> item : yourOriginalList) { 
    result.add(item); 
} 

「なぜ私は HashMapを追加することができます Mapのリスト? "あなたは尋ねるかもしれない。

多型が原因です。 Mapはインターフェイスであり、が必要な場合はHashMapMapを実装するので、ジェネリック型引数が同じである限り、HashMapにすることができます。

+0

また、リストを全くコピーする必要があるようです。キャストすることはできません(一般的に安全ではありませんが)。 – Thilo

+0

Java7コンパイラを使ってキャストとコピーコンストラクタをテストし、両方がコンパイルされませんでした。多分Java 8でコンパイルできますか? @Thilo – Sweeper

+0

安全でないキャスト( 'list =(List)originalList')を使わなければならないと思います。そして、はい、それについての警告があります。 – Thilo

関連する問題