package answers.section3;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class S301ForEachInsteadOfFor {
public S301ForEachInsteadOfFor() {
rewriteSimpleLoop();
rewriteSimpleLoopAnswer1();
rewriteSimpleLoopAnswer2();
rewriteSimpleLoopAnswer3();
}
private void rewriteSimpleLoop() {
List<String> strings = Arrays.asList("a", "b", "c", "d", "e");
StringBuilder builder = new StringBuilder();
for (String s: strings) {
builder.append(s);
}
System.out.println(builder.toString());
}
private void rewriteSimpleLoopAnswer1() {
List<String> strings = Arrays.asList("a", "b", "c", "d", "e");
StringBuilder builder = new StringBuilder();
// forEach メソッドで置き換え
strings.forEach(s -> builder.append(s));
System.out.println(builder.toString());
}
private void rewriteSimpleLoopAnswer2() {
List<String> strings = Arrays.asList("a", "b", "c", "d", "e");
StringBuilder builder = new StringBuilder();
// メソッド参照の使用
strings.forEach(builder::append);
System.out.println(builder.toString());
}
private void rewriteSimpleLoopAnswer3() {
List<String> strings = Arrays.asList("a", "b", "c", "d", "e");
// 参考
// Stream API を使用した文字列の連結
// 外部の変数にアクセスしないので、この形式の方が望ましい
String result = strings.stream()
.collect(Collectors.joining());
System.out.println(result);
}
public static void main(String... args) {
new S301ForEachInsteadOfFor();
}
}