LoginSignup
0
0

More than 5 years have passed since last update.

lambdaを使ってリストをマップ化

Posted at

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));

-> と :: の使い方になんか名前があったような気がしたけど忘れてしまいました。。
気になったことはすぐメモするべきですね

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0