
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
22.10.2014, 13:59
|
|||
|---|---|---|---|
Как правильно называть элементы коллекции чтобы не было коллизий |
|||
|
#18+
Есть коллекция объектов. Одна функция постоянно добавляет в нее объекты разных типов: Код: sql 1. 2. 3. 4. Ключ элемента коллекции "Тип объекта" + "Количество элементов в коллекции", допустим в пустую коллекцию добавлено 4 объекта: Object_A, Object_С, Object_B, Object_A Они будут иметь ключи Код: sql 1. 2. 3. 4. Вторая функция, постоянно удаляет объекты из коллекции, когда закончилось "их время жизни". Она может удалить любой объект. Например она удаляет объект с ключом Object_A_0, а функция добавления сразу после этого добавляет новый объект типа Object_A, у которого получается ключ Object_A_3, а такой элемент уже есть, получается исключение... Возник вопрос, как именовать ключи коллекции, чтобы в них был отражен тип объекта и они легко бы читались человеком. Т.е. название вроде "Тип Объекта" + GUID не устроит из-за хуман фактора. И еще желательно что бы не было долгих проверок при добавлении элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.10.2014, 14:04
|
|||
|---|---|---|---|
Как правильно называть элементы коллекции чтобы не было коллизий |
|||
|
#18+
Счетчик используй. Тогда новый будет Object_A_4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.10.2014, 14:10
|
|||
|---|---|---|---|
Как правильно называть элементы коллекции чтобы не было коллизий |
|||
|
#18+
Dima TСчетчик используй. Тогда новый будет Object_A_4 тогда будут пропуски в названиях объектов, Object_A_0 не будет в списке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.10.2014, 14:21
|
|||
|---|---|---|---|
Как правильно называть элементы коллекции чтобы не было коллизий |
|||
|
#18+
Чем критичны пропуски? Можно запоминать удаленные, затем возвращать номера. Ка-то так: Перед удалением запоминаешь номер удаляемого, например 0, удаляешь, если номер <= количеству элементов, запоминаешь в список свободных номеров. При добавлении если есть в списке свободных номеров - берешь номер оттуда и удаляешь этот номер из списка. Если список пуст - берешь номером количество элементов. Только тут ты рискуешь на следующие грабли наступить: например был Object_A_0, где была запомнена ссылка, ты его удалил, создал новый Object_A_0 и затем будет обращение по запомненной ссылке, при этом к совсем другому объекту, т.е. ничего не сглючит, просто отработает криво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.10.2014, 16:42
|
|||
|---|---|---|---|
Как правильно называть элементы коллекции чтобы не было коллизий |
|||
|
#18+
EoltВторая функция, постоянно удаляет объекты из коллекции, когда закончилось "их время жизни".Если при этом она НЕ ориентируется на имя объекта - то довесок к ключу можно хоть рандомом генерить. А поскольку тебе нужна (хрен понятно зачем) некая иллюзия непрерывности, сделай коллекцию связным списком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
22.10.2014, 18:08
|
|||
|---|---|---|---|
Как правильно называть элементы коллекции чтобы не было коллизий |
|||
|
#18+
EoltВозник вопрос, как А не возникло ли у вас вопроса "Зачем я вообще занимаюсь подобной фигнёй"? Основное впечатление - убрать нафиг это ненужное имя и заняться чем-нибудь полезным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&tablet=1&tid=1341186]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
714ms |
get topic data: |
16ms |
get forum data: |
5ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 1053ms |

| 0 / 0 |
