Oпять непонятки, и где искать ответ тоже не поятно
От: nt2000  
Дата: 25.12.19 21:47
Оценка: -2
На этот раз HashSet.
Mne naдо перебрать значения и править(удалять) по условию
Но for и set[i] никак ни хотят работать.
А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.."
Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.

Так как вы перебираете если надо менять значения?

Я пока выкрутился, но чую что так неправильно
Обьявил дополнительный Сет. В будущем может не прокатить

var set2 = new System.Collections.Generic.HashSet<int>();
foreach (var item in set1) if (item < mx && item > mn)   set2.Add(item);
set1.ExceptWith(set2);
Re: Oпять непонятки, и где искать ответ тоже не поятно
От: VladCore  
Дата: 26.12.19 00:25
Оценка: 3 (1)
N>На этот раз HashSet.
N>Mne naдо перебрать значения и править(удалять) по условию
N>Но for и set[i] никак ни хотят работать.
N>А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.."
N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.
N>Так как вы перебираете если надо менять значения?

N>Я пока выкрутился, но чую что так неправильно

N>Обьявил дополнительный Сет. В будущем может не прокатить

N>
N>var set2 = new System.Collections.Generic.HashSet<int>();
N>foreach (var item in set1) if (item < mx && item > mn)   set2.Add(item);
N>set1.ExceptWith(set2);
N>


Круто. коментарий не забудь поставить // nt2000 is cool

Можно короче и быстрее:
set1.ExceptWith(set1.Where(item => item < mx && item > mn).ToArray());
Re[2]: Oпять непонятки, и где искать ответ тоже не поятно
От: nt2000  
Дата: 26.12.19 08:58
Оценка: -2 :)
Здравствуйте, VladCore, Вы писали:

VC>Можно короче и быстрее:

VC>
VC>set1.ExceptWith(set1.Where(item => item < mx && item > mn).ToArray());VC>


а что действительно нет доступа к данным по индексу как-то вот так set[0]?
a kaк же вы живёте без?! такое похоже необходимо сплоширядом.. тем более линг появился недавно.. вроде..
Re[3]: Oпять непонятки, и где искать ответ тоже не поятно
От: Mihas  
Дата: 26.12.19 09:23
Оценка: +3 :)
Здравствуйте, nt2000, Вы писали:

N>а что действительно нет доступа к данным по индексу как-то вот так set[0]?

N>a kaк же вы живёте без?! такое похоже необходимо сплоширядом.. тем более линг появился недавно.. вроде..
Твоя в интернет ходить. МСДН читать. Нам все рассказать.
Re[3]: Oпять непонятки, и где искать ответ тоже не поятно
От: VladCore  
Дата: 26.12.19 09:30
Оценка: 3 (1) +2
Здравствуйте, nt2000, Вы писали:

VC>>Можно короче и быстрее:

VC>>
VC>set1.ExceptWith(set1.Where(item => item < mx && item > mn).ToArray());VC>


N>а что действительно нет доступа к данным по индексу как-то вот так set[0]?

N>a kaк же вы живёте без?!

у нас есть упорядоченные коллекции и неупорядоченные. HashSet — это не просто коллекция, а неупорядоченная коллекция. Так и живём
Re[3]: Oпять непонятки, и где искать ответ тоже не поятно
От: Mr.Delphist  
Дата: 26.12.19 16:34
Оценка: 3 (1)
Здравствуйте, nt2000, Вы писали:

N>а что действительно нет доступа к данным по индексу как-то вот так set[0]?

N>a kaк же вы живёте без?! такое похоже необходимо сплоширядом.. тем более линг появился недавно.. вроде..

Если надо индекс — можно скопировать в массив

HashSet<int> hashset = ...получаем хэш-сет...

var array = hashset.ToArray();  // если что, может потребоваться "using System.Linq;"
...теперь можно обращаться к array[i]...
Re[4]: Oпять непонятки, и где искать ответ тоже не поятно
От: Muxa  
Дата: 26.12.19 18:17
Оценка: 3 (1) :))) :)
вот так лучше.
то что автор ищет как раз.

HashSet<int> hashset = ...получаем хэш-сет...
for (int i = 0; i < hashset.Count; ++i)
{
    var element = hashset.ToArray()[i]
}
Re: Oпять непонятки, и где искать ответ тоже не поятно
От: Vladek Россия Github
Дата: 26.12.19 19:40
Оценка:
Здравствуйте, nt2000, Вы писали:

N>На этот раз HashSet.

N>Mne naдо перебрать значения и править(удалять) по условию
N>Но for и set[i] никак ни хотят работать.
N>А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.."
N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.

https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1.removewhere?view=netframework-4.8#System_Collections_Generic_HashSet_1_RemoveWhere_System_Predicate__0__
Re: Oпять непонятки, и где искать ответ тоже не поятно
От: Danchik Украина  
Дата: 26.12.19 20:16
Оценка:
Здравствуйте, nt2000, Вы писали:

N>На этот раз HashSet.

N>Mne naдо перебрать значения и править(удалять) по условию
N>Но for и set[i] никак ни хотят работать.
N>А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.."
N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.

N>Так как вы перебираете если надо менять значения?


N>Я пока выкрутился, но чую что так неправильно

N>Обьявил дополнительный Сет. В будущем может не прокатить

N>
N>var set2 = new System.Collections.Generic.HashSet<int>();
N>foreach (var item in set1) if (item < mx && item > mn)   set2.Add(item);
N>set1.ExceptWith(set2);
N>


Это какой-то жесть. Почитайте об разных типах коллекций. Не все они имеют доступ по индексу и это обусловленно тем как они работают. И это касается ВСЕХ языков.
Если вам надо перелопатить HashSet в таком стиле, просто сделайте копию в другой HashSet. Что вы, кстати и сделали, но через жопу.
Re: Oпять непонятки, и где искать ответ тоже не поятно
От: Sharowarsheg  
Дата: 26.12.19 20:31
Оценка:
Здравствуйте, nt2000, Вы писали:


N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.


Если не до производительности, то возьми List, у него есть индекс.
Re[2]: Oпять непонятки, и где искать ответ тоже не поятно
От: Ночной Смотрящий Россия  
Дата: 26.12.19 21:51
Оценка: -1
Здравствуйте, Danchik, Вы писали:

D>Это какой-то жесть. Почитайте об разных типах коллекций.


По моему надо просто товарищу понять, что программирование это явно не его.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Oпять непонятки, и где искать ответ тоже не поятно
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.12.19 08:54
Оценка: 3 (1)
Здравству(йте, nt2000, Вы писали:

N>На этот раз HashSet.

N>Mne naдо перебрать значения и править(удалять) по условию
N>Но for и set никак ни хотят работать.
N>А объясняльщики в интернете в один голос твердят: "..HashSet это такая производительность! у-у-у-у.. вот пример как перебирать: forich.."
N>Блиин!! Похоже они не из головы берут а тупо гуглтранслейтят документацию МС, иначе бы они понимали что начинаючему не до производительности — лишь бы работало пусть и кое-как.

N>Так как вы перебираете если надо менять значения?


N>Я пока выкрутился, но чую что так неправильно

N>Обьявил дополнительный Сет. В будущем может не прокатить

N>
N>var set2 = new System.Collections.Generic.HashSet<int>();
N>foreach (var item in set1) if (item < mx && item > mn)   set2.Add(item);
N>set1.ExceptWith(set2);
N>

Перебирать с изменением нельзя, т.к. в общем случае фреймворку непонятно, что делать с итератором. Ну, то есть он показывает на какой-то элемент, а этот элемент удалили. Что должно происходить при обращении к Current?
Или ещё хуже: в процессе итерации [i]добавили
какой-то элемент. Должен ли он попасться нам, если мы продолжаем итерировать итератор? Или не должен? Или это от чего-то зависит?
В общем, любое решение порождает трудноуловимые глюки.
Так что, наиболее подходящий способ для начинающего, которому не до производительности — это писать код ровно так, как сформулировано задание.
Ваш метод решения не требует второго множества — ведь аргумент ExceptWith имеет тип IEnumerable<T>.
Поэтому можно напсать просто вот так:
var set2 = (from item in set1 where (item < mx && item > mn) select item).ToArray(); // принудим материализацию, чтобы избежать той же проблемы.
set1.ExceptWith(set2);

Но для вашей цели есть способ записать это короче и с лучшей производительностью:
set1.RemoveWhere(item => (item < mx && item > mn));

А в целом, перебора с модификацией лучше всего избегать даже в тех случаях, когда вы пользуетесь индекнсым доступом. Когда нам нужен перебор с модификацией, мы разделяем фазы перебора и фазы модификации.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Oпять непонятки, и где искать ответ тоже не поятно
От: Ромашка Украина  
Дата: 27.12.19 12:34
Оценка: 3 (1)
Здравствуйте, VladCore, Вы писали:
VC>Можно короче и быстрее:
VC>
VC>set1.ExceptWith(set1.Where(item => item < mx && item > mn).ToArray());
VC>


Можно еще и понятнее:
set1.ExceptWith(Enumerable.Range(mn, mx)).ToArray();


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[3]: Oпять непонятки, и где искать ответ тоже не поятно
От: VladCore  
Дата: 27.12.19 14:12
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Здравствуйте, VladCore, Вы писали:

VC>>Можно короче и быстрее:
VC>>
VC>>set1.ExceptWith(set1.Where(item => item < mx && item > mn).ToArray());
VC>>


Р>Можно еще и понятнее:

Р>
Р>set1.ExceptWith(Enumerable.Range(mn, mx)).ToArray();
Р>


exception?
Re[2]: Oпять непонятки, и где искать ответ тоже не поятно
От: nt2000  
Дата: 27.12.19 15:38
Оценка:
Здравствуйте, Danchik, Вы писали:

D>Это какой-то жесть. Почитайте об разных типах коллекций. Не все они имеют доступ по индексу


Я как раз об этом и писал после поиска в интернете, что нигде внятно не разъясняют что "..Не все они имеют доступ по индексу .."
Re[2]: Oпять непонятки, и где искать ответ тоже не поятно
От: nt2000  
Дата: 27.12.19 15:41
Оценка:
Здравствуйте, Sharowarsheg, Вы писали:


S>Если не до производительности, то возьми List, у него есть индекс.


Это задачка из интернета по изучению коллекций. вот дошёл до сетов. впереди стаки
Re[3]: Oпять непонятки, и где искать ответ тоже не поятно
От: nt2000  
Дата: 27.12.19 15:45
Оценка: +1
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Здравствуйте, Danchik, Вы писали:


D>>Это какой-то жесть. Почитайте об разных типах коллекций.


НС>По моему надо просто товарищу понять, что программирование это явно не его.


скорее в интернетах отвечать не твое, вон твои братья накропали что я ничего не понял и прибежал сюда
Re[2]: Oпять непонятки, и где искать ответ тоже не поятно
От: nt2000  
Дата: 27.12.19 15:49
Оценка:
Здравствуйте, Vladek, Вы писали:

V>https://docs.microsoft.com/en-us/dotnet/api/system.collections.generic.hashset-1.removewhere?view=netframework-4.8#System_Collections_Generic_HashSet_1_RemoveWhere_System_Predicate__0__


ёомоё! вот это как раз мне нужно было бы!
наверное меня сбило с тольку where. наверное я решил что это линг и убрался оттуда. (я не могу использовать linq)
Re[4]: Oпять непонятки, и где искать ответ тоже не поятно
От: Ромашка Украина  
Дата: 27.12.19 17:47
Оценка:
Здравствуйте, VladCore, Вы писали:
VC>exception?

Может быть, я же не проверял... А с чего вдруг?


Всё, что нас не убивает, ещё горько об этом пожалеет.
Re[5]: Oпять непонятки, и где искать ответ тоже не поятно
От: VladCore  
Дата: 27.12.19 17:54
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>Здравствуйте, VladCore, Вы писали:

VC>>exception?

Р>Может быть, я же не проверял... А с чего вдруг?


Collection modified в MoveNext()
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.