2016-02-18 19 views
5

Zazwyczaj, jeśli wiem, że wcześniej wszystkie klucze mapie, I instancji to tak:Czy można utworzyć mapę z listą kluczy?

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

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

Czy istnieje jakiś sposób, aby to zrobić bezpośrednio, bez konieczności iterację listy? Coś z tego powodu:

new HashMap<String, Object>(someKeyList) 

Moja pierwsza myśl dotyczy bezpośredniej edycji zestawu kluczy mapy, ale operacja nie jest obsługiwana. Czy jest inny sposób, w jaki przeoczyłem?

Odpowiedz

7

Można użyć Java 8 strumieni:

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

pamiętać, że jeśli chcesz konkretnej implementacji Map, będziesz musiał użyć innego toMap metodę, w której można go określić.

+0

Co powinniśmy zrobić, gdy korzystamy z wcześniejszej wersji ** Java 8 **? – mmuzahid

+1

@mmuzahid OP może użyć kodu, który pojawia się w pytaniu, jeśli nie może używać Javy 8. – Eran

+0

Dziękujemy! Tylko jeden liniowiec, którego potrzebowałem :) –

Powiązane problemy