public AmigoSet(Collection<? extends E> collection) {
    int initialCapacity = Math.max(16, (int)Math.ceil(collection.size()/.75f));
    map = new HashMap<>(initialCapacity);
    addAll(collection);
    for (E e : collection) {
        map.put(e, PRESENT);
    }
}
@Override
public boolean add(E e) {
    map.put(e, PRESENT);
    return super.add(e);
}
Из документации: метод add класса AbstractCollection возвращает true, если эта коллекция изменилась в результате вызова. (Возвращает false, если эта коллекция не допускает дублирования и уже содержит указанный элемент.)