import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class VerhuisDoos {
    private final Set<VerhuisItem> items;
    private double volume = 0;
    private double gewicht = 0;

    public VerhuisDoos() {
        this.items = new HashSet<>();
    }

    public VerhuisDoos(Set<VerhuisItem> 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<VerhuisItem> items() {
        return Collections.unmodifiableSet(items);
    }

    @Override
    public String toString() {
        return "VerhuisDoos [items=" + items + "]";
    }
}