Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 30

Как получить значения из ArrayList?

15.07.2016, 22:00. Показов 8458. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Есть ArrayList s в котором присвоен одномерный массив. Как получить значение этого массива?
C#
1
2
public ArrayList s = new ArrayList();
s.Add(new int[5] { 3, 4, 72, 11, 0 });
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.07.2016, 22:00
Ответы с готовыми решениями:

Как получить доступ к данным в ArrayList
Имеется код, который сортирует данные из Map по значениям. Map<Integer, Integer> map = new HashMap<>(); List list = new...

Как передать значения с ArrayList в обычный массив?
Привет! Появилась необходимость передать значения с ArrayList в обычный массив String. Пытался сделать вот так, но при попытке вывести на...

Как из ArrayList получить System.Collections.Generic.List
Есть следующая переменная: System.Collections.ArrayList arrayList; которая содержит элементы типа elemType (Type elemType = какой-то...

10
14 / 14 / 5
Регистрация: 15.12.2014
Сообщений: 90
15.07.2016, 22:49
C#
1
2
3
4
5
6
            ArrayList s = new ArrayList();
            s.Add(new int[] {1,2,3 });
            foreach (int[] array in s)
            {
                foreach (int item in array) Console.WriteLine(item);
            }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18285 / 14208 / 5368
Регистрация: 17.03.2014
Сообщений: 28,888
Записей в блоге: 1
15.07.2016, 22:53
Лучший ответ Сообщение было отмечено vositovt как решение

Решение

vositovt, значение массива можно разве что через reflection, но в этом обычно нет необходмости. Отдельные значения можно получить так же как и из массива - по целочисленному индексу. Единственное что понадобится выполнить приведение типа.
C#
1
int first = (int)s[0];
P.S. Вместо ArrayList лучше использовать List<int> т.к. в этом не случае не будет упаковки значений.
1
 Аватар для m0nax
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
16.07.2016, 00:18
еще как вариант можно забыть о существовании ArrayList и использовать аналоги из этого тысячелетия вроде List<int[]>
в нем нет никакого смысла ни в каких случаях, просто ради совместимости висит мертвым грузом
0
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
16.07.2016, 03:00
Цитата Сообщение от m0nax Посмотреть сообщение
просто ради совместимости висит мертвым грузом
Плин, вот я отстал, а я только ArrayList и использую...
0
Эксперт .NET
 Аватар для Usaga
14145 / 9374 / 1350
Регистрация: 21.01.2016
Сообщений: 35,306
16.07.2016, 04:42
DataPlanner, ArrayList хранит объекты типа object. Это плохо потому, что:
1) Неудобно - чтобы извлечь объект нужно каждый раз выполнять приведение типа;
2) Небезопасно - в коллекцию можно поместить объекты разных типов (для больных PHP головного мозга это только плюс);
3) Расточительно - значимые типы (int, double, DateTime, все struct) дополнительно упаковываются в обёртку ссылочного типа для того, чтобы можно было с ними работать как с object, а потом распаковываются;

Обобщённые коллекции (да и вообще всё обобщённое) ничем из выше перечисленного не страдают. Забудь про System.Collections и добро пожаловать в System.Collections.Generic.
1
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
17.07.2016, 03:56
Цитата Сообщение от Usaga Посмотреть сообщение
Это плохо потому, что:
1. Во внутренних классах незаменимы, кроме того скорость работы выше, т.к. ArrayList работает со ссылками, а T[] хранит объекты внутри.
2. Внешние классы разумеется типизированные, поэтому проблема надуманная, логика не место для валидации.
3. Программисты, которые используют везде обобщения как правило плохо продумывают архитектуру, доказано практикой.
0
Эксперт .NET
 Аватар для Usaga
14145 / 9374 / 1350
Регистрация: 21.01.2016
Сообщений: 35,306
17.07.2016, 07:06
Цитата Сообщение от DataPlanner Посмотреть сообщение
1. Во внутренних классах незаменимы, кроме того скорость работы выше, т.к. ArrayList работает со ссылками, а T[] хранит объекты внутри.
T[] хранит ссылки на конкретные объекты или экземпляры значимых типов.

ArraList же хранит ссылки только на тип object. При доступе к хранимому объекту нужно выполнять приведение типа, которое хоть и быстрое, но не мгновенное. Если же мы захотим сохранить int (значимый тип), то он дополнительно будет заворачиваться в объект ссылочного типа, что тоже потребует времени на создание "обёртки" и памяти для её хранения (по мимо самого завёрнутого типа), а так же ссылки на обёртку (да, она тоже место в памяти занимает).

Каким макаром это всё быстрее прямой работы с массивом конкретного типа (который находится внутри того же List<T>)?!

Цитата Сообщение от DataPlanner Посмотреть сообщение
Во внутренних классах незаменимы
Цитата Сообщение от DataPlanner Посмотреть сообщение
Внешние классы разумеется типизированные
Получается, ты городишь какие-то самодельные костыли, чтобы добиться поведения типизированной коллекции, вместо того, чтобы просто использовать готовую?

Цитата Сообщение от DataPlanner Посмотреть сообщение
Программисты, которые используют везде обобщения как правило плохо продумывают архитектуру, доказано практикой
Да ладно
0
1 / 1 / 0
Регистрация: 29.09.2015
Сообщений: 30
17.07.2016, 12:05  [ТС]
Вместо ArrayList использовал List. Всё работает классно.
Спасибо огромное
1
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
18.07.2016, 02:58
Цитата Сообщение от Usaga Посмотреть сообщение
Да ладно
Угу, взгляни на бенчмарки, скорость ArrayList превышает в десятки раз, а в мультипоточном контексте другой альтернативы попросту нет. Приведение не аргумент, разовая операция. Жду очередных ляпов.
0
Эксперт .NET
 Аватар для Usaga
14145 / 9374 / 1350
Регистрация: 21.01.2016
Сообщений: 35,306
18.07.2016, 04:46
Цитата Сообщение от DataPlanner Посмотреть сообщение
Угу, взгляни на бенчмарки, скорость ArrayList превышает в десятки раз
Первый попавшийся мне бенчмарк показывает, что упаковка в ArrayList - дело медленное. Если твоя вера в производительность ArrayList-а опирается на данные другого теста, то приведи ссылку, посмотрим.

Кстати, второй попавшийся мне бенчмакр показывает, что ArrayList ещё и памяти потребляет на порядок больше.

Про потокобезопасность ArrayList-а MS пишет: "A synchronized version of ArrayList is easy to create by using the Synchronized method; however, this type of synchronization is relatively inefficient. The Array and List<T> classes leaves it up to the user to implement synchronization.". Так, что к сильной стороне ArrayList-а эту особенность относить не стоит.

Цитата Сообщение от DataPlanner Посмотреть сообщение
Приведение не аргумент, разовая операция.
А что, тогда аргумент? Боксинг и увеличенное потребление памяти тоже не аргумент? Кастинг выполняемый в цикле (к примеру при поиске) добавит заметный оверхед, но это, похоже тоже не аргумент? Возможность ошибиться и записать в коллекцию объект другого типа при молчаливом согласии компилятора - тоже пустяк?

Не по теме:

Ты к PHP как относишься? :D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2016, 04:46
Помогаю со студенческими работами здесь

ArrayList - Как получить текущий индекс с которым работает цикл?
Всем привет. Есть ArrayList со строками. Идет отображение всех элементов из ArrayList с помощью цикла for(). Как получить текущий индекс с...

Зачем ресурс определенный в XAML как ArrayList доп-но приводится к типу ArrayList в коде с#?
Ресурс &quot;phones&quot; для ListView определен в XAML как ArrayList. Затем в коде c# он дополнительно приводится к типу ArrayList. Зачем это...

Как поместить в preferences arrayList типа: arraylist<Class>
Как поместить в preferences arrayList типа: arraylist&lt;Class&gt; Class содержит вид: public class CountryClass { private String...

ArrayList список классов - как в цикле получить мои классы и вызывать их статичный метод
Добрый день! Есть некий класс public class MyClass&lt;T&gt; { public static void foo() { ...

Как средствами RTTI получить указатель на ComponentArray[0] или как получить значения некоторых свойств?
type TTestComponentItem = class(TComponent) end; TComponentArray = array of TTestComponentItem; TTestComponent =...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru