import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Set; public class VerhuisDoos { private final Set items; private double volume = 0; private double gewicht = 0; public VerhuisDoos() { this.items = new HashSet<>(); } public VerhuisDoos(Set items) { this.items = new HashSet<>(items); volume = items.stream().mapToDouble(VerhuisItem::volume).sum(); gewicht = items.stream().mapToDouble(VerhuisItem::gewicht).sum(); } public boolean addItem(VerhuisItem item) { if (items.add(item)) { volume += item.volume(); gewicht += item.gewicht(); return true; } return false; } public boolean removeItem(VerhuisItem item) { if (items.remove(item)) { volume -= item.volume(); gewicht -= item.gewicht(); return true; } return false; } public double volume() { return volume; } public double gewicht() { return gewicht; } public Set items() { return Collections.unmodifiableSet(items); } @Override public String toString() { return "VerhuisDoos [items=" + items + "]"; } }