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, если эта коллекция не допускает дублирования и уже содержит указанный элемент.)package com.javarush.task.task37.task3707;
import java.io.Serializable;
import java.util.*;
public class AmigoSet<E> extends AbstractSet<E> implements Serializable, Cloneable, Set<E> {
private static final Object PRESENT = new Object();
private transient HashMap<E, Object> map;
public AmigoSet() {
map = new HashMap<>();
}
// public static void main(String[] args) {
// int x = 14;
// double y = x / 0.75f;
// System.out.println("y = " + y);
// double z = Math.ceil(y);
// System.out.println("Math.ceil(y) = " + z);
// }
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);
}
@Override
public Iterator<E> iterator() {
return null;
}
@Override
public int size() {
return 0;
}
}