Я делаю приложение для Android.Я хотел бы расширить класс HashSet и добавить к нему новую функцию, которая выбирает случайный элемент из набора.Все остальное должно вести себя как обычный HashSet.
Так что я подумал о наличии этого класса:
public class RandomHashSet<E> extends HashSet<E> {
private Random mRand = new Random();
}
И я хочу добавить к нему функцию, которая выполняет этот код для HashSet:
if (set.size() == 0) {
return null;
}
int index = mRand.nextInt(set.size());
Iterator<Object> iter = set.iterator();
for (int i = 0; i < index; i++) {
iter.next();
}
return iter.next();
Однако я не уверен, как реализовать эту функцию в классе, в частности, как вызывать созданный экземпляр набора и как его итерировать.
В Исходный код HashSet Я вижу, что они инициируют переменную с именем 'map':
map = new HashMap<>();
Например, функция add () HashSet реализована следующим образом:
public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
Могу ли я как-то использовать 'map' в своей функции (будучи приватной)?