forked from next-step/java-racingcar
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCars.java
33 lines (27 loc) · 927 Bytes
/
Cars.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package racingcar.domain;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class Cars {
private final List<Car> cars;
public Cars(List<Car> cars) {
validateNotEmpty(cars);
validateElementNotNull(cars);
this.cars = new ArrayList<>(cars);
}
private void validateNotEmpty(List<Car> cars) {
if (cars == null || cars.isEmpty())
throw new IllegalArgumentException("자동차가 없습니다.");
}
private void validateElementNotNull(List<Car> cars) {
boolean hasNullElement = cars.stream().anyMatch(Objects::isNull);
if (hasNullElement)
throw new IllegalArgumentException("자동차가 null입니다.");
}
public List<Integer> move() {
return cars.stream()
.map(Car::move)
.collect(Collectors.toList());
}
}