Как в С# извлечь элемент HashSet по индеку?

207
20 сентября 2017, 09:24

Есть HashSet

HashSet<int> nxn = new HashSet<int>();
Random rnd = new Random();
while ( nxn.Count != 9 )
{
   nxn.Add(rnd.Next(ot, to));
}

Нужно занести его в целочисленный массив. Пытался сделать через .CopyTo(), но он, насколько я понял, работает только с одномерными массивами. Как в HashSet извлекать элементы по индексу?

Answer 1

UPD: судя по всему вопрос в теле отличается от вопроса в заголовке.

Для того, чтобы получить массив из HashSet достаточно воспользоваться методом расширения ToArray

var arr = hashSet.ToArray();

HashSet реализует интерфейс IEnumerable<T>, для классов реализующих этот интерфейс есть метод расширения ElementAt

Поэтому формально ответ на вопрос будет:

hashSet.ElementAt(index);

При этом каждый раз будет пройдена вся коллекция с первого элемента, до элемента с индексом index

Как подсказывает @Андрей

Следует добавить, что HashSet не гарантирует порядок возврата, поэтому ElementAt(x) может возвращать разные элементы, например, до и после очередного добавления в HashSet

Если нужен доступ по случайному индексу - то стоит использовать другую коллекцию.

READ ALSO
SSO SAML token в SOAP web service

SSO SAML token в SOAP web service

Господа, встал такой вопрос - имеется SSO SAML token примерно в таком виде -

164
Сортировка строк в алфавитном порядке

Сортировка строк в алфавитном порядке

Есть свой List - как реализовать,чтобы слова были в алфавитном порядке от 1-ой буквы

457
Классы, наследование

Классы, наследование

Создал 2 классаОт одного наследовал другой

289