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