Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913

ArrayList

12.09.2011, 13:56. Показов 3341. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обььясните, пожалуйста, разницу между count i capacity в ArrayList
Т.е. есть
C#
1
2
3
4
5
АrrayList t= new ArrayList()
//как-то там заполняется динамический массив t
 
int icount =t.count;
int icapacity = t.capacity;
В MSDN написано, что count - число элементов, которое действительно содержит класс ArrayList,
a capacity - число элементов, которое может содержать. Что значит - может? Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.09.2011, 13:56
Ответы с готовыми решениями:

В классе Use объявить ArrayList и добавить в каждый элемент ArrayList ID, Name, Text, Song
народ помогите есть класс Card и класс Use, код бросил, namespace KURSOVA { class Card { public string Name {...

ArrayList: необработанное исключение. Операции над множествами с использованием ArrayList
Задача: разработать калькулятор для логических множеств ( для операций пересечение, объединение, разность и симметричная разность). Сделано...

ArrayList.Contains
Добрый день. Есть две коллекции типа ArrayList. Первая коллекция (word) хранит элементы: the the english Вторая...

6
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
12.09.2011, 14:23
Т.е. память для них выделена, но туда ничего не записано.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections;
 
class MainClass
{
    public static void Main (string[] args)
    {
        ArrayList arrayList = new ArrayList(100);
        Random random = new Random();
        //Заполнили только первые десять элементов
        for(int i = 0; i < 10; i++)
            arrayList.Add(random.Next());
        Console.WriteLine("Capacity: " + arrayList.Capacity);
        Console.WriteLine("Count: " + arrayList.Count);
    }
}
1
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
12.09.2011, 14:50  [ТС]
Спасибо, но, все-равно, непонятно. Вы с самого начала определяете размер - 100. А, вот, например, в этом коде, когда массив заполняется динамически, если ввожу 3 элемента, count = 3, a capacity=4 Почему?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 static void Main(string[] args)
        {
            ArrayList info = new ArrayList();
            string temp;
            do
            {
                Console.WriteLine("Information? ");
                if ((temp = Console.ReadLine()) != "")
                {
                    info.Add(temp);
                }
            }
            while (temp != "");
            for (int i = 0; i < info.Count;i++ )
            
                Console.WriteLine("Info -> {0} ",info[i]);
            Console.WriteLine("info.count = {0}, info.capacity =  {1}", info.Count, info.Capacity);
            Console.ReadLine();
        }
0
48 / 48 / 8
Регистрация: 26.08.2011
Сообщений: 84
12.09.2011, 15:17
Цитата Сообщение от iva_a Посмотреть сообщение
если ввожу 3 элемента, count = 3, a capacity=4 Почему?
Вы не задаёте явным образом ёмкость ArrayList, а как сказано в msdn, в случае превышения Count над Capacity происходит перераспределение памяти под ArrayList, видимо в целях оптимизации .NET выделяет память с небольшим запасом, чтобы не тратить время и выделять память под каждый новый элемент.
0
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
12.09.2011, 15:23  [ТС]
Вообще-то в моем случае, count = 3, capacity=4 Где же count превышает capacity? То, что какое-то перераспределение памяти происходит - понятно, но непонятно какое! И в каком случае тогда можно использовать capacity?
0
48 / 48 / 8
Регистрация: 26.08.2011
Сообщений: 84
12.09.2011, 15:29
Ключевая фраза:

Цитата Сообщение от lambda Посмотреть сообщение
Вы не задаёте явным образом ёмкость ArrayList
Цитата Сообщение от iva_a Посмотреть сообщение
Вообще-то в моем случае, count = 3, capacity=4 Где же count превышает capacity?
У вас Count = 3 уже когда вы вставили элементы, а когда вы только создали коллекцию у вас Capacity и Count равны нулю и когда вы вставляете первый элемент то потенциальное Count превышает Capacity и просходит перераспределение.
1
 Аватар для _Vladimir_
57 / 55 / 10
Регистрация: 27.07.2010
Сообщений: 279
12.09.2011, 15:45
capacity автоматически задает размерность списка (с запасом), по сути предотвращает частое перераспределение памяти
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.09.2011, 15:45
Помогаю со студенческими работами здесь

Коллекция ArrayList
При выводе данных выскакивает ошибка. Но при использовании List&lt;Pip&gt; всё работает нормально. Не подскажете как исправить. using System; ...

Код из ArrayList
доброго времени суток. Кто нить сможет обьеснить работу этого кода. я взял из ArrayList метод Add public virtual int Add(object value) ...

вывод из ArrayList
Есть класс, в котором содержатся данные о человеке(имя, профессия, рост, зарплата). Нужно было сделать динамический массив с помощью...

Работа с ArrayList
Здравствуйте. Интересует вопрос, как можно показать реализацию метода RemoveAt из класса ArrayList. Он удаляет по индексу элемент...

Сортировка в arraylist
Есть класс, разбивающий строку на составляющие. Создан массив из трех строк, нужно сортировать эти строки по буквенно числовому принципу....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере 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-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru