Структуры данных для hashMap, List и Set - PullRequest
3 голосов
/ 27 апреля 2010

Может ли кто-нибудь подсказать, пожалуйста, подробнее посмотреть на используемые структуры данных и как они реализованы на странице Список, Набор и Карты коллекции Util.

В интервью большинство вопросов будет касаться Алгоритмов, но я нигде не видел деталей реализации. Может ли кто-нибудь поделиться информацией.

Ответы [ 4 ]

4 голосов
/ 27 апреля 2010

Чтобы узнать, как Java реализует коллекции, определенное место, куда можно обратиться, это сам исходный код, свободно доступный. Обычно списки реализуются как массивы (ArrayList) или как связанные списки (LinkedList); наборы - это либо хеш-таблицы (HashSet), либо деревья (TreeSet); и карты являются хеш-таблицами (HashMap).

Алгоритмы для манипулирования массивами, связанными списками, хеш-таблицами и двоичными или n-арными деревьями (добавление, удаление, поиск, сортировка) сами по себе достаточно сложны, поэтому для их охвата необходим целый курс. Любой, кто разрабатывает свои собственные программы, обычно должен понимать эти алгоритмы и их компромиссы производительности наизусть. Здесь нет замены для изучения учебника и / или практики.

3 голосов
/ 27 апреля 2010

Исходный код API доступен, получите JDK и откройте файл src.zip из папки установки.

1 голос
/ 25 апреля 2018

ArrayList : массив

LinkedList : двусвязный список (объекты ввода)

HashMap : массив объектов Entry, каждый объект Entry, указывающий на односвязный список

HashSet : внутренне использует HashMap, сохраняет данные как ключ и фиктивный объект (класса Object) как значение на карте.

TreeMap : Реализация объектов Entry в красно-черном дереве.

TreeSet : внутренне использует TreeMap. Ключ как данные и фиктивный объект как значение.

* Entry : является внутренним классом в этих коллекциях и обычно имеет Key, Value, ссылки на другие объекты Entry и т. Д.

1 голос
/ 27 апреля 2010

Вы всегда можете открыть исходные файлы, но все это есть, но я бы не советовал, так как обычно их довольно сложно понять. Вместо этого я бы попытался найти основную структуру данных и найти ее. Википедия содержит большую часть информации, которую вы хотите знать по этим предметам, а Google содержит абсолютный остаток.
Список - это просто динамический массив ,
Набор - это ... набор ,
А карты, как правило, хеш-таблицы , ключом которых является хеш-код ключа, и хранящиеся в виде пары ключ-значение.
Если вы собираетесь погрузиться в исходный код, я бы порекомендовал ознакомиться с «как это возможно», иначе это будет трудно понять, особенно хеш-таблицу.

...