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

更新頻度の悪いブログ

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

先ほどの続き、完全に個人的な備忘録
こうして見ると、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;
	}
}

Hoge2.java

package com.example;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class Hoge2 {
	
	private Integer id;
	
	private String name;
}

実行部

@Test
public void test() {
	
	 Hoge hoge1 = new Hoge(1, "hoge");
	 Hoge hoge2 = new Hoge(2, "hogeo");
	 Hoge hoge3 = new Hoge(3, "hogemi");
	 Hoge hoge4 = new Hoge(4, "hogeyoshi");
	 Hoge hoge5 = new Hoge(5, "hogeko");
	 
	 List<Hoge> hogeList = Arrays.asList(hoge1, hoge2, hoge3, hoge4, hoge5);
	 
	 List<Hoge2> hogeList1 = new ArrayList<>();
	 
	 // for文
	 for (Hoge hoge : hogeList) {
		 hogeList1.add(
		       new Hoge2(
		           hoge.getId(),
		           hoge.getName())
		       );
		 }
	  
	  
	 // Stream
	 List<Hoge2> hogeList2 = hogeList.stream().map(hoge -> new Hoge2(
			 hoge.getId(),
			 hoge.getName()
			 )).collect(Collectors.toList());
	  
	  
	 // hogeList1の結果出力
	 hogeList1.forEach(hoge -> {
		 if(Objects.nonNull(hoge.getId())) {
			 System.out.println(hoge.getName());			 
		 }
	 });
	  
	 System.out.println("----------");
	 
	 // hogeList2の結果出力
	 hogeList2.forEach(hoge -> {
		 if(Objects.nonNull(hoge.getId())) {
			 System.out.println(hoge.getName());			 
		 }
	 });
 }


consoleの結果
hoge
hogeo
hogemi
hogeyoshi
hogeko
----------
hoge
hogeo
hogemi
hogeyoshi
hogeko