2016-05-11 8 views
0

私はMap<String, List<String>>を使って何かを記録したいと思っています。 各都市には、何人かのユーザーが何人いるかがあります。java8 mapリストの値に要素を単純に追加する方法

が今私のコードは

Map<String, List<String>> map = new HashMap<>(); 
    if(map.get("city_1")==null){ 
     map.put("city_1", new ArrayList<>()); 
    } 
    map.get("city_1").add("aaa"); 

ですが、私はそれが少し面倒だと感じ、私はこの効果

Map<String, List<String>> map = new HashMap<>(); 
    map.compute("city_1", (k,v)->v==null?new ArrayList<>():v.add("aaa")); 

をしたいが、それはコンパイルエラーがあります:

Type mismatch: cannot convert from boolean to List<String> 

ので、いずれかを持っていますそれ以外の方法で簡単にできますか?

答えて

7

使用computeIfAbsent

が存在しない場合はマップに新しいリストを格納し、新規または既存のリストを返します
map.computeIfAbsent(work, k -> new ArrayList<>()).add("aaa"); 

関連する問題