2016-02-18 10 views
5

は通常、私はこのようにそれをインスタンス化します。キーのリストでマップをインスタンス化することはできますか?私は事前にマップのすべてのキーを知っていれば

List<String> someKeyList = getSomeList(); 
    Map<String, Object> someMap = new HashMap<String, Object>(someKeyList.size()); 

    for (String key : someKeyList) { 
     someMap.put(key, null); 
    } 

は、リストを反復することなく、直接これを実行する方法はありますか?何かの効果:

new HashMap<String, Object>(someKeyList) 

私の最初の考えは、地図のキーセットを直接編集することでしたが、操作はサポートされていません。他に見逃している方法はありますか?

答えて

7

は、Java 8つのストリームを使用することができます:あなたは、特定のMap実装をしたい場合、あなたはそれを指定できるさまざまtoMap方法を、使用する必要がありますことを

Map<String,Object> someMap = 
    someKeyList.stream() 
       .collect(Collectors.toMap(k->k,k->null)); 

注意を。

+0

** Java 8 **の以前のバージョンを使用しているときはどうすればよいですか? – mmuzahid

+1

@mmuzahid OPは、Java 8を使用できない場合、質問に表示されるコードを使用できます。 – Eran

+0

ありがとうございました!ちょうど私が必要としたワンライナー:) –

関連する問題