From afc00cf7fa51b48585905ab4b5b2ca43550e09ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=97=B0=EC=A7=84?= Date: Fri, 8 Sep 2023 17:36:41 +0900 Subject: [PATCH] =?UTF-8?q?feat(Cars):=20=EC=9A=B0=EC=8A=B9=EC=9E=90=20?= =?UTF-8?q?=EA=B3=84=EC=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/domain/Car.java | 12 ++++++++++++ src/main/java/racingcar/domain/Cars.java | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/main/java/racingcar/domain/Car.java b/src/main/java/racingcar/domain/Car.java index 4f2106730..0b3cf1799 100644 --- a/src/main/java/racingcar/domain/Car.java +++ b/src/main/java/racingcar/domain/Car.java @@ -15,7 +15,19 @@ public void race() { position.move(); } + public boolean isWinner(int maxPosition) { + return position.isSame(maxPosition); + } + public String getRacingResult() { return String.format(OutputMessage.RACING_RESULT.toString(), name.getValue(), position.getValue()); } + + public Position getPosition() { + return position; + } + + public Name getName() { + return name; + } } diff --git a/src/main/java/racingcar/domain/Cars.java b/src/main/java/racingcar/domain/Cars.java index d79d3f9bd..2975100ed 100644 --- a/src/main/java/racingcar/domain/Cars.java +++ b/src/main/java/racingcar/domain/Cars.java @@ -1,7 +1,9 @@ package racingcar.domain; import java.util.ArrayList; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; public class Cars { @@ -23,4 +25,21 @@ public String getRacingResult() { ); return stringBuilder.toString(); } + + public List getWinner() { + int maxPosition = calculateMaxPosition(); + return cars.stream() + .filter(car -> car.isWinner(maxPosition)) + .map(Car::getName) + .collect(Collectors.toList()); + } + + public int calculateMaxPosition() { + List positions = cars.stream() + .map(Car::getPosition) + .mapToInt(Position::getPosition) + .boxed() + .collect(Collectors.toList()); + return Collections.max(positions); + } }