From 113bb6f055a62e0bcdf39c09ee7a58c16d777bbe Mon Sep 17 00:00:00 2001 From: JoungMinJu Date: Sun, 15 Dec 2024 21:23:36 +0900 Subject: [PATCH 1/2] =?UTF-8?q?step5=20:=20=ED=95=A8=EC=88=98=ED=98=95=20?= =?UTF-8?q?=EB=AC=B8=EB=B2=95=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/CountOfLine.java | 5 +++- src/main/java/domain/Height.java | 5 +++- src/main/java/domain/Ladder.java | 14 ++++------- src/main/java/domain/Line.java | 26 +++++++++----------- src/main/java/domain/RandomRungsBuilder.java | 10 +++----- 5 files changed, 28 insertions(+), 32 deletions(-) diff --git a/src/main/java/domain/CountOfLine.java b/src/main/java/domain/CountOfLine.java index 9ea18dd..c0fd1d0 100644 --- a/src/main/java/domain/CountOfLine.java +++ b/src/main/java/domain/CountOfLine.java @@ -1,9 +1,12 @@ package domain; +import java.util.function.Predicate; import util.Errors; public record CountOfLine(int value) { + private static final Predicate ismpty = value -> value <= 0; + public CountOfLine { validate(value); } @@ -13,7 +16,7 @@ private void validate(int value) { } private void validateIsNotEmpty(int value) { - if (value <= 0) { + if (ismpty.test(value)) { throw new IllegalArgumentException(Errors.LADDERS_MUST_CONTAINS_LEAST_ONE_LADDER); } } diff --git a/src/main/java/domain/Height.java b/src/main/java/domain/Height.java index f6408d6..84be2e8 100644 --- a/src/main/java/domain/Height.java +++ b/src/main/java/domain/Height.java @@ -1,9 +1,12 @@ package domain; +import java.util.function.Predicate; import util.Errors; public record Height(int value) { + private static final Predicate isNegative = value -> value <= 0; + public Height { validate(value); } @@ -13,7 +16,7 @@ private void validate(int value) { } private void validatePositive(int value) { - if (value <= 0) { + if (isNegative.test(value)) { throw new IllegalArgumentException(Errors.LADDER_HEIGHT_MUST_BE_POSITIVE); } } diff --git a/src/main/java/domain/Ladder.java b/src/main/java/domain/Ladder.java index 6488a9d..0ec013c 100644 --- a/src/main/java/domain/Ladder.java +++ b/src/main/java/domain/Ladder.java @@ -32,11 +32,8 @@ private void validateLaddersHeight(List lines) { } private void validatePointStatus(List lines) { - for (int index = 0; index < lines.size() - 1; index++) { - Line nowLine = lines.get(index); - Line nextLine = lines.get(index + 1); - validateRungInSamePosition(nowLine, nextLine); - } + IntStream.range(0, lines.size() - 1) + .forEach(index -> validateRungInSamePosition(lines.get(index), lines.get(index + 1))); } private void validateRungInSamePosition(Line nowLine, Line nextLine) { @@ -46,8 +43,7 @@ private void validateRungInSamePosition(Line nowLine, Line nextLine) { } private boolean isRungInSamePosition(Line nowLine, Line nextLine) { - int maxPosition = nowLine.getHeight(); - return IntStream.range(0, maxPosition) + return IntStream.range(0, nowLine.getHeight()) .allMatch( position -> nowLine.isConnectedToRightLineAt(position) == nextLine.isConnectedToLeftLineAt(position)); } @@ -68,8 +64,8 @@ public Map getResult() { for (int nowIndex = 0; nowIndex < lines.size(); nowIndex++) { int finalIndex = calculateTargetIndex(nowIndex, height); - String name = getNameOfLine(nowIndex); - String outcome = getOutcomeOfLine(finalIndex); + String name = getNameOfLine(nowIndex); + String outcome = getOutcomeOfLine(finalIndex); result.put(name, outcome); } return result; diff --git a/src/main/java/domain/Line.java b/src/main/java/domain/Line.java index d9e23db..d31f0a7 100644 --- a/src/main/java/domain/Line.java +++ b/src/main/java/domain/Line.java @@ -1,7 +1,8 @@ package domain; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; import util.Errors; public class Line { @@ -17,14 +18,13 @@ private Line(Player player, String outcome, List points) { this.points = points; } - public static Line of(Player player, String outcome, List leftRungsStatus, List rightRungsStatus) { + public static Line of(Player player, String outcome, List leftRungsStatus, + List rightRungsStatus) { validateHeight(leftRungsStatus, rightRungsStatus); - int maxPosition = leftRungsStatus.size(); - List points = new ArrayList<>(); - for (int position = 0; position < maxPosition; position++) { - points.add(new Point(leftRungsStatus.get(position), rightRungsStatus.get(position))); - } + List points = IntStream.range(0, leftRungsStatus.size()) + .mapToObj(position -> new Point(leftRungsStatus.get(position), rightRungsStatus.get(position))) + .collect(Collectors.toList()); return new Line(player, outcome, points); } @@ -35,11 +35,9 @@ private static void validateHeight(List leftRungsStatus, List } public List getRightStatus() { - List rightStatus = new ArrayList<>(); - for (Point point : points) { - rightStatus.add(point.isConnectedToRightLadder()); - } - return rightStatus; + return points.stream() + .map(Point::isConnectedToRightLadder) + .collect(Collectors.toList()); } public int getHeight() { @@ -55,12 +53,12 @@ public String getOutcome() { } public boolean isConnectedToLeftLineAt(int position) { - Point nowPoint = this.points.get(position); + Point nowPoint = this.points.get(position); return nowPoint.isConnectedToLeftLadder(); } public boolean isConnectedToRightLineAt(int position) { - Point nowPoint = this.points.get(position); + Point nowPoint = this.points.get(position); return nowPoint.isConnectedToRightLadder(); } diff --git a/src/main/java/domain/RandomRungsBuilder.java b/src/main/java/domain/RandomRungsBuilder.java index 3feb3d8..20472e3 100644 --- a/src/main/java/domain/RandomRungsBuilder.java +++ b/src/main/java/domain/RandomRungsBuilder.java @@ -1,6 +1,5 @@ package domain; -import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.stream.Collectors; @@ -16,12 +15,9 @@ public RandomRungsBuilder() { @Override public List buildAndGetRungsStatus(List prevRungsStatus) { - List rungsStatus = new ArrayList<>(); - for (Boolean doesPrevLadderHaveRung : prevRungsStatus) { - boolean nowRungsStatus = generateRungIfAbsent(doesPrevLadderHaveRung); - rungsStatus.add(nowRungsStatus); - } - return rungsStatus; + return prevRungsStatus.stream() + .map(this::generateRungIfAbsent) + .collect(Collectors.toList()); } private boolean generateRungIfAbsent(Boolean doesPrevLadderHaveRung) { From 684618b85a8c1ce7548a4efe8e12c9cccc6017b2 Mon Sep 17 00:00:00 2001 From: JoungMinJu Date: Sun, 15 Dec 2024 21:42:04 +0900 Subject: [PATCH 2/2] =?UTF-8?q?step5=20:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/LadderGameController.java | 1 - src/main/java/service/LadderService.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/controller/LadderGameController.java b/src/main/java/controller/LadderGameController.java index 5be2a3d..9deb0c5 100644 --- a/src/main/java/controller/LadderGameController.java +++ b/src/main/java/controller/LadderGameController.java @@ -1,6 +1,5 @@ package controller; -import domain.CountOfLine; import domain.Height; import domain.Ladder; import domain.RungsBuilder; diff --git a/src/main/java/service/LadderService.java b/src/main/java/service/LadderService.java index 3694e34..cc78995 100644 --- a/src/main/java/service/LadderService.java +++ b/src/main/java/service/LadderService.java @@ -23,7 +23,7 @@ public LadderService(RungsBuilder rungsBuilder) { } public Ladder createLadder(Height height, List names, List outcomes) { - final List players = getPlayers(names); + List players = getPlayers(names); CountOfLine countOfLine = getcountOfLine(players, outcomes); List lineCollection = createLineCollection(countOfLine, height, players, outcomes); return new Ladder(lineCollection);