@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Item item = (Item) o;

        if (Double.compare(item.cost, cost) != 0) return false;
        if (id != item.id) return false;
        if (Double.compare(item.weight, weight) != 0) return false;
        if (desc != null ? !desc.equals(item.desc) : item.desc != null) return false;
        if (!name.equals(item.name)) return false;

        return true;
    }