есть набор элементов с которыми нужно работать,
пусть это будут случайные числа
использую ArrayList т.к удобно динамически увеличивать размерность массива,
но мне нужно также и удалять значения, например удалять все четные числа
ниже приведен примерный кусок кода, мне он не нравится, т.к нужно использовать
дополнительный массив, может нужно не ArrayList использовать?
public static void ChangeValues( IList myList )
{
System.Collections.IEnumerator myEnumerator = myList.GetEnumerator();
while ( myEnumerator.MoveNext() )
{
//добавляю в другой ArrayList текущий номер, чтобы затем в другом цикле удалить
//эту запись
}
}
... <<Britney — camper Rsdn@Home 1.1.4 beta 1 Windows XP 5.1.2600.0 >>
Здравствуйте, DEMON HOOD, Вы писали:
DH>есть набор элементов с которыми нужно работать, DH>пусть это будут случайные числа DH>использую ArrayList т.к удобно динамически увеличивать размерность массива, DH>но мне нужно также и удалять значения, например удалять все четные числа DH>ниже приведен примерный кусок кода, мне он не нравится, т.к нужно использовать DH>дополнительный массив, может нужно не ArrayList использовать?
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, DEMON HOOD, Вы писали:
DH>>дополнительный массив, может нужно не ArrayList использовать?
AVK>А может проще не использовать энумератор?
как тогда? мне нужно переодически просматривать весь массив и манипулировать с хранимыми данными.
... <<Rammstein — Zwitter Rsdn@Home 1.1.4 beta 1 Windows XP 5.1.2600.0 >>
Здравствуйте, DEMON HOOD, Вы писали:
DH>Здравствуйте, AndrewVK, Вы писали:
AVK>>Здравствуйте, DEMON HOOD, Вы писали:
DH>>>дополнительный массив, может нужно не ArrayList использовать?
AVK>>А может проще не использовать энумератор? DH>как тогда? мне нужно переодически просматривать весь массив и манипулировать с хранимыми данными.
спросил и понял, что ступил
... <<Rammstein — Adios Rsdn@Home 1.1.4 beta 1 Windows XP 5.1.2600.0 >>
Здравствуйте, DEMON HOOD, Вы писали:
DH>Такой вопрос —
DH>есть набор элементов с которыми нужно работать, DH>пусть это будут случайные числа DH>использую ArrayList т.к удобно динамически увеличивать размерность массива, DH>но мне нужно также и удалять значения, например удалять все четные числа DH>ниже приведен примерный кусок кода, мне он не нравится, т.к нужно использовать DH>дополнительный массив, может нужно не ArrayList использовать?
DH>
DH> public static void ChangeValues( IList myList )
DH> {
DH> System.Collections.IEnumerator myEnumerator = myList.GetEnumerator();
DH> while ( myEnumerator.MoveNext() )
DH> {
DH> //добавляю в другой ArrayList текущий номер, чтобы затем в другом цикле удалить
DH> //эту запись
DH> }
DH> }
DH>
А если использовать следующий код:
public void DeleteEvenNumbers(ArrayList myArray)
{
for(int i=0; i<myArray.Count; i++ )
{
if (myArray[i]%2 == 0)
{
myArray.RemoveAt(i);
}
}
}
С>Менять контент коллекции в процессе перечисления ее элементов низзя.
Почему нельзя??? В этой ситуации енумератор не используется, поэтому можно.
Только надо учесть, что после удаления элемента myArray.RemoveAt(i), если ничего с переменной цикла i не делать — следующей итерацией ты перепрыгнешь через один элемент коллекции. Чтобы этого не было, добавляй i-- в теле цикла.
Здравствуйте, Wile, Вы писали:
W>А как тогда с точки зрения "good-practice" удалять из коллекции элементы в зависимости от условия, накладываемого на элементы этой же коллекции?
Здравствуйте, Сантехник, Вы писали:
С>Здравствуйте, Wile, Вы писали:
W>>А как тогда с точки зрения "good-practice" удалять из коллекции элементы в зависимости от условия, накладываемого на элементы этой же коллекции?
С>Ну, к примеру, мой вариант был здесь
Здравствуйте, Wile, Вы писали: _FR>>Несогласие как-нить прокоментировать возможно? W>Я прошу прощения, млин промахнулся... Ошибся сообщением, д.б. быть предыдущее... Я могу как-то исправить свою ошибку?
Ничего, с кем не случается
Help will always be given at Hogwarts to those who ask for it.