|
|
|
Как правильно называть элементы коллекции чтобы не было коллизий
|
|||
|---|---|---|---|
|
#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, 13:59 |
|
||
|
Как правильно называть элементы коллекции чтобы не было коллизий
|
|||
|---|---|---|---|
|
#18+
Счетчик используй. Тогда новый будет Object_A_4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 14:04 |
|
||
|
Как правильно называть элементы коллекции чтобы не было коллизий
|
|||
|---|---|---|---|
|
#18+
Dima TСчетчик используй. Тогда новый будет Object_A_4 тогда будут пропуски в названиях объектов, Object_A_0 не будет в списке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 14:10 |
|
||
|
Как правильно называть элементы коллекции чтобы не было коллизий
|
|||
|---|---|---|---|
|
#18+
Чем критичны пропуски? Можно запоминать удаленные, затем возвращать номера. Ка-то так: Перед удалением запоминаешь номер удаляемого, например 0, удаляешь, если номер <= количеству элементов, запоминаешь в список свободных номеров. При добавлении если есть в списке свободных номеров - берешь номер оттуда и удаляешь этот номер из списка. Если список пуст - берешь номером количество элементов. Только тут ты рискуешь на следующие грабли наступить: например был Object_A_0, где была запомнена ссылка, ты его удалил, создал новый Object_A_0 и затем будет обращение по запомненной ссылке, при этом к совсем другому объекту, т.е. ничего не сглючит, просто отработает криво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 14:21 |
|
||
|
Как правильно называть элементы коллекции чтобы не было коллизий
|
|||
|---|---|---|---|
|
#18+
EoltВторая функция, постоянно удаляет объекты из коллекции, когда закончилось "их время жизни".Если при этом она НЕ ориентируется на имя объекта - то довесок к ключу можно хоть рандомом генерить. А поскольку тебе нужна (хрен понятно зачем) некая иллюзия непрерывности, сделай коллекцию связным списком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 16:42 |
|
||
|
Как правильно называть элементы коллекции чтобы не было коллизий
|
|||
|---|---|---|---|
|
#18+
EoltВозник вопрос, как А не возникло ли у вас вопроса "Зачем я вообще занимаюсь подобной фигнёй"? Основное впечатление - убрать нафиг это ненужное имя и заняться чем-нибудь полезным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2014, 18:08 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38784497&tid=1341186]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 399ms |

| 0 / 0 |
