Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/54: Рейтинг темы: голосов - 54, средняя оценка - 4.85
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544

Поиск и удаление элемента из ArrayList

08.02.2012, 11:08. Показов 10026. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Возник такой вопрос:
Есть класс.
C#
1
2
3
4
5
6
7
8
class MyClass
{
   string name;
   public MyClass(string Nam)
   {
       name = Nam;
   }
}
Есть массив типа ArrayList arr
Пользователь создает произвольное число элементов класса, их количество фиксируется переменной
C#
1
int count = 0
добавляем новый элемент в массив
C#
1
2
arr.Add(new MyClass(count.ToString()));
count++;
Вопрос в том, как теперь из массива удалить элемент, у которого поле name экземпляра класса MyClass равно скажем 5.



Если в лоб решать, то можно перебрать все элементы массива, найти нужный, зафиксировать его индекс и удалить при помощи метода RemoveAt(), но я думаю есть решение гораздо лучше!

Заранее всем спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.02.2012, 11:08
Ответы с готовыми решениями:

Удаление элемента из ArrayList
Доброго времени суток, уважаемые форумчане! Возникла проблема в процессе написания одного макроса на VBScript'e. Подскажите...

ArrayList<Integer> удаление элемента
Как удалить элемент из списка Integer? Почему то нет метода remove()...

Вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск заданного элемента
Добавить в класс &quot;Односвязный список&quot; следующие функции: вставка элемента в заданную позицию, удаление элемента по заданной позиции, поиск...

10
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.02.2012, 11:26
Ну раз количество элементов определяется переменной и с каждым добавлением эта переменная увеличивается на 1 (начиная с нуля), при этом ее значение присваивается свойству name, то разумно предположить, что значение свойства name на позиции х будет равно этой позиции.
Следовательно, удалять можно так:
C#
1
2
int elementToRemove = 5;
arr.RemoveAt(5); // На пятой позиции находится элемент со значением name = "5".
Если на вход поступает строковый параметр, то предварительно отпарсить его в целое:
C#
1
2
string name = "5";
arr.RemoveAt(int.Parse(name));
0
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
08.02.2012, 11:30  [ТС]
На первый раз да, но не все так просто. Допустим count = 5, а я удалю 3-й.
count уменьшим на 1 , это не проблема
Получится у нас остались 0 1 2 4 5.
т.е. под номером 4 у нас уже не будет элемент с именем 4, а будет с именем 5
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.02.2012, 12:08
Логично.
Ну в таком случае - поиском с последующим удалением найденного индекса, как вы и предположили в первом сообщении.

А вообще забрасывайте вы этот ArrayList, он во фреймворке существует исключительно ради совместимости. Переходите на генерики - тот же List<MyClass>
1
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
08.02.2012, 12:21  [ТС]
Для List эту задачу можно при помощи LINQ решить я так понимаю?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.02.2012, 12:24
Нет, в листе эта задача точно так же работает - через поиск и удаление.
Методы LINQ никогда не изменяют оригинальную коллекцию, они лишь делают выборку данных.
0
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
08.02.2012, 12:27  [ТС]
Я имел ввиду, что можно ли построить запрос LINQ таким образом, что бы он вернул нам индекс нужного элемента? я с List почти не работал, попробую что за зверь.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.02.2012, 12:34
Через LINQ можно найти конкретный элемент по определенному условию.
Потом этот элемент можно удалить из списка, индекс не нужен в данном случае.
Да и LINQ тоже, чего уж там.

C#
1
2
3
4
5
6
List<MyClass> list = new List<MyClass>();
for (int i = 0; i < 10; i++)
   list.Add(new MyClass(i.ToString());
 
var found = list.Find(mc => mc.Name == "5");
if (found != null) list.Remove(found);
1
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
08.02.2012, 12:42  [ТС]
Спасибо. Не хочу создавать отдельную тему. Вопрос такой возник. Как создать переменную, что бы ее можно было прочитать из любой формы проекта?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
08.02.2012, 12:46
Создать ее в классе, который виден любой форме проекта.
1
Автор FAQ
Автор FAQ
 Аватар для Rockedit
1803 / 615 / 37
Регистрация: 22.12.2009
Сообщений: 1,544
08.02.2012, 12:48  [ТС]
Спасибо) так и сделал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2012, 12:48
Помогаю со студенческими работами здесь

Реализация списка.Удаление хвостового элемента.Поиск элемента
Всем привет,мое задание выглядит так : В класс List&lt;T&gt; из классной работы добавить следующие методы: void addHead(T...

Удаление элемента из списка и поиск элемента
Нужно удалить определенный элемент из списка. Найти элемент в списк и вывести на него всю информацию. Вот код. Не знаю как написать...

Удаление и поиск элемента в односвязном списке
Вот мои функции, но они почему то не работают: функция удаления удаляет всегда голову, а функция поиска находит все элементы. ITEM*...

Добавление, удаление, и поиск элемента в таблице. PrettyTable
Такая история, нужно изначально сделать так что бы в таблицу можно было добавить, удалить или найти эллемент. Не пойму как это реализовать,...

Поиск максимального элемента и удаление его из массива
нужно добавить кнопку задание она должна выполнить поиск максимального элемента и удаление его из массива.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru