2016-02-18 23 views
5

Genellikle, böyle örnekleriz:Bir Harita'yı bir anahtar listesiyle başlatmak mümkün mü? Ben önceden bir haritanın tüm anahtarları biliyorsanız

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

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

listesi arasında yineleme gerek kalmadan bu doğrudan yapmak için herhangi bir yolu var mı? etkisiyle şey:

new HashMap<String, Object>(someKeyList) 

ilk düşüncem doğrudan haritanın anahtar kümesi düzenlemek için, ama işlem desteklenmiyor. Başka yöne bakıyorum mı?

cevap

7

Java 8 Akımlar kullanabilirsiniz:

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

Not Belirli bir Map uygulanmasını istiyorsanız, bunu belirleyebileceğiniz farklı toMap yöntemi kullanmak gerekeceğini.

+0

** Java 8 **'nin önceki sürümlerini kullanırken ne yapmalıyız? – mmuzahid

+1

@mmuzahid OP, Java 8 kullanamazlarsa sorunda görünen kodu kullanabilir. – Eran

+0

Teşekkür ederiz! Sadece ihtiyacım olan tek liner :) –

İlgili konular