![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| x8m6 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Проблема такая:
Есть 2 иерархии! 1-ая (Интерфейс IObject и классы, его реализующие _Object1, _Object2,..., и.т.д.) 2-ая (На вершине абстрактный класс _Class и его наследники _Class1 , _Class2,..., и.т.д. ) Каждый объект, порожденный от класса _Class или его наследников содержит в себе некоторое количество представителей класса, реализовавшего интерфейс IObject. Хранятся они в хэш - таблице. Т.е. так:
Для каждого объекта типа IObject при его создании генерируется уникальное имя. По этому имени он и заносится в хэш-таблицу. Проблема возникает, когда нужно достать объект типа IObject по его уникальному имени из хэш таблицы. На этот момент нет доступа к самому объекту, а значит и нет доступа к его имени, поэтому и не получается это сделать. Как решить проблему? Возможно по другому нужно спроектировать... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Достать по имени означает, что имя известно. А в твоей формулировке получается, что есть некий критерий по которому ты хочешь найти объект, но проблема в том, что ты этот критерий не можешь нормально сформулировать. И начать следует именно с того, по какому критерию ты хочешь искать объекты, класс объекта, значения неких полей и т.д. Чой-то сегодня с утра народ так и поперло, одна задачка хлеще другой -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| x8m6 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Критерий должен быть таков, чтобы он однозначно и уникально определял объект. По этому и бы решено использовать уникальное имя в качестве критерия. Но в такой формулировке действительно не получается достучатся до этого объекта. По этому поводу есть ещё одна мысль... При добавлении объекта в хэш таблицу запоминать его имя в каком - нибудь динамическом перечислении внутри этого самого объекта типа _Class. Тогда было бы замечательно... можно было бы просмотреть имена которые там есть и по нужному имени получить объект из хэша. Но такой структуры "динамическое перечисление" по моему не существует... |
|||
|
||||
| Fieral |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
ну какбы сам объект и есть его уникальное имя
чисто так, из теории информации а если вы хотите дать ему новое имя - то это имя должно существовать относительно чего-то например есть некто вася пупкин относительно своих друзей - он "вася" относительно одноклассников - "пупкин" относительно паспотрного стола - "Петрович Василий Пупкин 1986 года рождения от 4 февраля, номер паспорта N65-28376491 выдан....." так что нужен тогда некий объект относительно которого существует имя Это сообщение отредактировал(а) Fieral - 11.6.2009, 12:08 --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
1. У HashMap можно получить Set ключей. 2. Сразу же возникает вопрос: а на кой болт вообще нужен HashMap, если мы получаем объект путем тупого перебора всех объектов? Можно просто сложить их в массив, а затем бегать по нему и искать объект с "нужным" именем. Ты по прежнему не понимаешь. У тебя нет четкого критерия по которому ты хочешь искать объект. Как ты собираешься среди всех имен найти то которое тебе нужно? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Fieral |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
и что значит "нет доступа к самому объекту"?
--------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
| x8m6 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
И как это всё можно приминить к моей задаче... Вообще то у самого объекта нет имени... имя есть у ссылки на объект... а ссылок может быть очень много Это сообщение отредактировал(а) x8m6 - 11.6.2009, 12:19 |
|||
|
||||
| x8m6 |
|
||||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Да, это будет тупо перебор. Может быть как то так попробывать:
И тогда поправить _Class :
Тогда не будет тупого перебора.
По имени объекта, которое было придумано при его добавлении в MyHash. При этом тот програмист, который добавил некоторый объект, должен помнить имя этого объекта ... если он его забыл он может его вспомнить, подсмотрев его в перечислении... и таким образом получить нужный объект... Пример:
Слишком заморочено... сам понимаю...но по другому не представляю как сделать... Это сообщение отредактировал(а) x8m6 - 11.6.2009, 14:34 |
||||||||||
|
|||||||||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 5 Всего: 38 |
А может перенести всю эту лабуду в реляционную базу, вот и будет там тебе уникальное имя объекта - его ИД. А то что Вася для друзей "Вася", а для одноклассников - "пупкин", так это просто в определенном месте твоего функционала просто будешь показывать ту или иную колонку из этой таблицы.
-------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
| Fieral |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
а ясно, я под это дело написал свой Map с блекджеком и шлюхами на базе своего Set в котором можно дёргать ключи по порядковому номеру
Это сообщение отредактировал(а) Fieral - 11.6.2009, 14:04 --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Программист будет это делать вручную? -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| x8m6 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 11.12.2008 Репутация: нет Всего: нет |
Нет, в базу не пойдет. Слишком часто нужно обращатся к этим объектам, добавлять и удалять новые.
Да Это сообщение отредактировал(а) x8m6 - 11.6.2009, 14:39 |
||||
|
|||||
| Fieral |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
http://robotics.icstweb.org/rebecca-e/file...09/06/remap.jar ?
Добавлено @ 15:20
Это сообщение отредактировал(а) Fieral - 11.6.2009, 15:21 --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Жесть Тогда нафига вам вообще Java? Выписывайте имена на бумажку, на бумажку же выписывайте данные, потом просто все аккуратно разложите по папочкам и все будет ОК -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Fieral |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Ну какбы например работать с xml файлами --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |