|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
Уважаемый форумчане, здравствуйте. Нужен ваш совет. Допустим у меня есть класс A и, к примеру, три его наследника: B, C и D. Я создаю коллекцию, скажем ArrayList list, кладу туда list.put(new B()) кого-то или всех из наследников. Вопрос, как мне проверить, что в коллекции содержатся все наследники? Именно не найти лишних, не убедиться, что все они наследники, а выяснить все ли из трех на месте или кого нет? Пожалуйста, подскажите ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 18:30 |
|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
GrossmasteR, Циклом ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 18:46 |
|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, а есть возможность поподробнее. мне нужен какой-то contains по типу или instanceof наоборот что ли. То есть допустим у меня есть, пусть будет, Arraylist list. Я туда положил, к примеру, только 1 из 3 наследников list.put(new B()) И потом я проверяю как-то A "instanceof наоборот" list.get(i) — false, а B "instanceof наоборот" list.get(i) — true и т.д. Итого двух таких то не хватает ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 18:48 |
|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
GrossmasteR Уважаемый форумчане, здравствуйте. Нужен ваш совет. Допустим у меня есть класс A и, к примеру, три его наследника: B, C и D. Я создаю коллекцию, скажем ArrayList list, кладу туда list.put(new B()) кого-то или всех из наследников. Вопрос, как мне проверить, что в коллекции содержатся все наследники? Именно не найти лишних, не убедиться, что все они наследники, а выяснить все ли из трех на месте или кого нет? Пожалуйста, подскажите Правильный ответ такой - тебе надо не это, просто у тебя есть некая проблема которую ты тщательно скрываешь почему-то, придумал костыль чтобы его решить и будешь до последнего отпираться что это не так. Использовать в одной коллекции объекты разных типов, пусть и наследников - это очень короткий путь прострелить себе ногу. Тебе надо понять что привело к этой ситуации и передизайнить систему, это единственный правильный вариант. Скорее всего ты скажешь - так задизайнено, не мое это дело, скажите просто как и т.д. - в таком случае ответ Petro самый разумный - цикл ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 18:53 |
|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
Что такое "instanceof наоборот' ? Для меня, наоборот это поменять A instanceof B на B instanceof A ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 18:54 |
|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
GrossmasteR что все они наследники, а выяснить все ли из трех на месте или кого нет? Пожалуйста, подскажите Циклом. there_is_B boolean = false; there_is_C boolean = false; there_is_D boolean = false; for ( ).... if ( there_is_B && there_is_C && there_is_D ) { return "OK"; } else { return ""; } ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 18:58 |
|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
GrossmasteR instanceof наоборот" Возле компа? Давай свой код. Че стеснятся. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 19:08 |
|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
Кода нет. Это учебная задача. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Как узнать, какого именно наследника из B,C,D не хватает, если кого-то не хватает? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 19:48 |
|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
Чему призвана научить эта задача и в каком виде изначально сформулирована? В общем виде задача в java не решаема. Придется так или иначе знание о подклассах включать в код. Проще всего завести Set<Class<?>> subclasses и потом сравнивать с этим сетом свой лист. Алгоритм проходится на первом курсе в разделе "двумерные массивы". ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 20:24 |
|
Поиск в коллекции по типу
|
|||
---|---|---|---|
#18+
GrossmasteR Кода нет. Это учебная задача. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Как узнать, какого именно наследника из B,C,D не хватает, если кого-то не хватает? В чем проблема? if ( ! isB ) { System.out.println( "There is not B" ); } if ( ! isC ) { System.out.println( "There is not C" ); } if ( ! isD ) { System.out.println( "There is not D" ); } ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 20:38 |
|
|
start [/forum/topic.php?fid=59&msg=39940767&tid=2120866]: |
0ms |
get settings: |
10ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
37ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
226ms |
get tp. blocked users: |
1ms |
others: | 292ms |
total: | 577ms |
0 / 0 |