2013-06-27 4 views
0

Меня спросили в интервью, какую структуру я бы использовал, чтобы хранить 100 имен: NSDictionary или NSArray и почему.NSDictionary vs NsArray

Каков наилучший ответ?

Он сказал, что хочет выяснить, существует ли имя.

+0

Разве они не предоставили вам больше информации? Как его использовать? Как будут искать имена? Сортировано? Что представляют собой имена? – Nate

+0

Ну, что наиболее эффективно? Что наименее поглощает память? Как вам нужно будет получить доступ к именам позже? Нужны ли вам имена для сортировки для удобного поиска? –

+6

Если он хочет выяснить, существует ли имя, правильным ответом будет «NSSet». –

ответ

2

Я думаю, что это имеет некоторые хорошие объяснения двух, хотя это больше внимания на аспекте производительности https://stackoverflow.com/a/10545362/1415348

Это действительно заканчивает тем более открытым концом б/с, это зависит от того, что вы можете сделать с данные.

И теперь, когда он отредактирован с дополнительной информацией о том, как они хотят его использовать, я согласен с Hot Licks, NSSet будет лучше для этого. Он имеет метод containsObject для определения существования в множестве. NSSet Class Reference

3

Это открытый вопрос, и интервьюер, вероятно, больше интересуется вашим процессом мысли и вопросами, которые вы задаете. Короткий ответ IMO - NSArray, если вам просто нужно перечислить объекты. NSDictionary, если вам нужно искать объекты с помощью ключа. И NSSet, когда вам просто нужно проверить членство. Конечно, все это зависит от количества предметов и от того, как они используются. На 100 предметов это, вероятно, 6, 1/2 десятка других. И еще вопрос читаемости и понимания в коде.

Прочтите эту старую, но не устаревшую статью, чтобы отлично рассмотреть соображения производительности каждой коллекции. http://www.cocoawithlove.com/2008/08/nsarray-or-nsset-nsdictionary-or.html

+0

В данной статье проверяются структуры данных для заданного размера, для более глубокого анализа NSArrays читайте http://ridiculousfish.com/blog/posts/array.html – Sebastian

2

Лучший ответ - задать больше вопросов, чтобы уточнить требования. Какие имена? Какие языки и локали? Как они будут использоваться? Изменяются ли они или статичны? Есть проблема с хранением или производительностью? И так далее.

По всей видимости, целью было выяснить, как вы думаете о дизайне. Даже если они не ответили на другие вопросы, они, вероятно, ожидали, что, по крайней мере, некоторые соображения предусматривают использование различных структур данных, где вы показываете, как их можно использовать и почему они имеют смысл.

Я серьезно сомневаюсь, что они ожидали ответа одного слова