import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Truck { private final int initialCapacity; private final List items; private int remainingCapacity; Truck(int capacity) { initialCapacity = capacity; remainingCapacity = capacity; items = new ArrayList<>(); } public boolean add(int item) { if (canAdd(item)) { remainingCapacity -= item; items.add(item); return true; } return false; } public int remainingCapacity() { return remainingCapacity; } public int initialCapacity() { return initialCapacity; } public boolean canAdd(int item) { return item <= remainingCapacity; } public List items() { return Collections.unmodifiableList(items); } @Override public String toString() { return items.toString(); } }