全力サイバーパンクシティ

更新頻度の悪いブログ

Java: for文で書いた場合とStreamで書いた場合

ご無沙汰してます。プログラム初心者です。
最近Javaでfor文を見つけたらSteamに書き換えましょうと言われたので、Streamを勉強し始めました。
備忘録的に書いてみました。実行部のところは同じようなことを2回やっていて、それぞれfor文とStreamで書いてあります。

Hoge.java

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