lambdaの使い方メモ
リストに入っているデータを後の処理(for文とか)で使うために、一度マップ化しておくことがよくあります。
以前はリストをfor文で回してMapにputしていましたが、lambdaを使うと1行でかけることを知りました。
SampleBean.java
public class SampleBean {
private String id;
private String name;
// getter,setter
}
List<SampleBean> sampleList;
を
// Key=ID, Value=SampleBean
Map<String, SampleBean> sampleMap;
のMapにする。
lambdaを使わない場合はこう
Map<String, SampleBean> sampleMap = new HashMap<>();
for (SampleBean bean : sampleList) {
sampleMap.put(bean.getId(), bean);
}
lambdaを使った場合はこう
Map<String, SampleBean> sampleMap = sampleList.stream().collect(Collectors.toMap(SampleBean::getId, bean -> bean));
こんな風にもかける。
Map<String, SampleBean> sampleMap = sampleList.stream().collect(Collectors.toMap(bean -> bean.getId(), bean -> bean));
-> と :: の使い方になんか名前があったような気がしたけど忘れてしまいました。。
気になったことはすぐメモするべきですね