2016-12-07 15 views
0

私は別のマップからマップを作成するのにcollectEntriesを使用しています。しかし、私はキーに基づいて値を取得しようとするとき。マップ全体を印刷するときにキーがあるにもかかわらず、nullを返します。collectEntriesキーが見つかりません

static void main(String[] args) { 
    Map<String, List<String>> multiMap = ['apple': ['granny', 'delicious']] 
    Map m = multiMap.collectEntries { String k, List<String> v -> 
     v.collectEntries { String subkey -> ["${k}-${subkey}": subkey] } 
    } 

    println m 
    println m.keySet() 
    println m['apple-granny'] 
    println m[m.keySet()[0]] 
} 

出力は次のようになります。

[apple-granny:granny, apple-delicious:delicious] 
[apple-granny, apple-delicious] 
null 
null 

私はマップから値を取得することができないのはなぜ?私はどのようにそれをやっていますか?

答えて

2

あなたの鍵は、あなたのcollectEntriesラインへの変更Gストリングインスタンス、文字列ではありません...(Seemanyquestionsonhereaboutこの問題)

ですので:

v.collectEntries { String subkey -> [("${k}-${subkey}".toString()): subkey] } 

への文字列としてキーを強制し、正常に動作します

関連する問題