Массивы vs. Коллекции

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Массивы vs. Коллекции

Сообщение Faust » 25.04.2004 (Вс) 11:37

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

mad_Max
Бывалый
Бывалый
 
Сообщения: 203
Зарегистрирован: 15.09.2002 (Вс) 21:17
Откуда: Russia, Cherepovets

Сообщение mad_Max » 25.04.2004 (Вс) 22:38

Ну если только добавлять значения, а не изменять те, которые уже добавлены, то коллекция более-менее годится:
Код: Выделить всё
Dim newCol As New Collection
newCol.Add variable

Добавлять variable любого типа будет нормально, но вот если
Код: Выделить всё
newCol.Item(1) = variable2

то Error:Object Required, т.е. менять значения так не получится. Обращаться к элементам можно как обычно - newCol(index) или newCol(key).[/code]

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.04.2004 (Пн) 9:29

Чем массив, лучше используй коллекции. А еще лучше, используй списки.
Lasciate ogni speranza, voi ch'entrate.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 26.04.2004 (Пн) 11:38

Разрешите присоединиться к вопросу?
Спасибо.

Имеется файл с записями (ну вы уже знаете) :) , вопрос по которым у меня уже возникал. (Тема "Помогите разобраться с чтением типизованных файлов").
Так вот. Эти записи тоже лучше хранить в коллекции? Или всё же в массиве?
Там много полей, обработка записей (сортировка, отображение) будет выполняться практически по любому полю. Как быть?
Что посоветуете?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.04.2004 (Пн) 11:46

Я бы посоветовал базу данных. Если же БД никак, то конечно массив.
Lasciate ogni speranza, voi ch'entrate.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 26.04.2004 (Пн) 12:06

Меня смущает в массивах то, что будет более ресурсоёмкий поиск конкретного (или нескольких) элемента. А в коллекциях уже как бы на уровне ключей заложены предпосылки к более быстрому поиску.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.04.2004 (Пн) 14:32

Массивы можно (и нужно) индексировать, при этом они почти не будут уступать коллекциям (в тех тоже применяется бинарный поиск). Но манипулировать массивами гораздо удобнее, чем коллекцией.
Lasciate ogni speranza, voi ch'entrate.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 26.04.2004 (Пн) 15:03

Ясно. В принципе я так и сделал - через массивы.
Но при загрузке списка сообщений из файла, они у меня сначала закидываются в массив, а потом уже из массива в грид.
Если сообщений 10 000 - уже ощущаются тормоза.
Как избежать их?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.04.2004 (Пн) 15:37

А почему бы не грузить сразу в грид? Большинство нормальных гридов сами реализуют сортировку и фильтрацию, зачем дублировать одну и ту же информацию.
Lasciate ogni speranza, voi ch'entrate.

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 26.04.2004 (Пн) 16:36

Чтобы грид не перегружать колонками (прочтено, удалено, и другие признаки статуса письма) записи заголовков письма я закидываю в массив. А уже при обновлении грида проверяю условия по значению стоящему в колонке "arrayindex".
Уже после щелчка на нужном заголовке я вытаскиваю данные из записи array(значение колонки "arrayindex")
Таким образом я хочу избавиться от ошибок при сортировке.
Думаю таким образом я как раз и не перегружаю грид.
Вот если бы я сразу все данные закидывал в грид - тогда да, лучше предоставить всё таблице.
А вот мне интересно, может знает кто, как сделаны отступы в списке писем в ОЕ при ответе на письмо. Неужели просто банальные пробелы ставятся (в зависимости от глубины треда).


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 4

    TopList