ご無沙汰してます。プログラム初心者です。
最近Javaでfor文を見つけたらSteamに書き換えましょうと言われたので、Streamを勉強し始めました。
備忘録的に書いてみました。実行部のところは同じようなことを2回やっていて、それぞれfor文とStreamで書いてあります。
package com.example; import lombok.Data; @Data public class Hoge { private Integer id; private String name; public Hoge(Integer id, String name) { this.id = id; this.name = name; } public Hoge(String name) { this.name = name; } }
実行部
@RunWith(SpringJUnit4ClassRunner.class) class StreamTest { @Test public void test() { Hoge hoge1 = new Hoge(1, "hoge"); Hoge hoge2 = new Hoge("hogeo"); Hoge hoge3 = new Hoge(3, "hogemi"); Hoge hoge4 = new Hoge("hogeyoshi"); Hoge hoge5 = new Hoge(5, "hogeko"); List<Hoge> hogeList = Arrays.asList(hoge1, hoge2, hoge3, hoge4, hoge5); // idがnullでないHogeを表示 // for文で書く場合 for(Hoge hoge :hogeList) { if(Objects.nonNull(hoge.getId())) { System.out.println(hoge.getName()); } } System.out.println("----------"); // idがnullでないHogeを表示 // streamで書く場合 hogeList.forEach(hoge -> { if(Objects.nonNull(hoge.getId())) { System.out.println(hoge.getName()); } }); } }
consoleの結果:
hoge
hogemi
hogeko
----------
hoge
hogemi
hogeko