MapでStream
Map で Stream を使う練習。
public class Studay { public static void main(String[] args) { List<String> checkList = Arrays.asList("ohasi","osusi","oisi"); Map<String, String> map = new HashMap<String, String>() { { put("osasimi", "1"); put("ohasi", "2"); put("osusi", "3"); put("omikosi", "3"); } }; Map<String, String> getMap = map.entrySet().stream() .filter(v->checkList.contains(v.getKey())) .collect(Collectors.toMap(v->v.getKey(),v->v.getValue())); System.out.println(getMap);//{ohasi=2, osusi=3} } }
そこまで難しい処理はしていません。
Map と検索用の List を作って、List に含まれる Key だけを抽出した Map を作っています。
entrySet()
ポイントはここ。Map から直接 Stream は使えないので、entrySet()で Map の全要素を Set で取得します。
中身はこんな感じで入っています。
Map<String, String> map = new HashMap<String, String>() { { put("osasimi", "1"); put("ohasi", "2"); put("osusi", "3"); put("omikosi", "3"); } }; System.out.println(map.entrySet());//[osasimi=1, ohasi=2, osusi=3, omikosi=3]
これで Stream が使えるようになりました。
getKey()と getValue()で値を取得できるので、getKey()を使って checkList から filter しています。
最後は Collectors.toMap()で Map に変換して終わり。