какие данные могут хранить коллекции java

Справочник по Java Collections Framework

Данная публикация не является полным разбором или анализом (не покрывает пакет java.util.concurrent ). Это, скорее, справочник, который поможет начинающим разработчикам понять ключевые отличия одних коллекций от других, а более опытным разработчикам просто освежить материал в памяти.

Что такое Java Collections Framework?

Java Collection Framework — иерархия интерфейсов и их реализаций, которая является частью JDK и позволяет разработчику пользоваться большим количесвом структур данных из «коробки».

Базовые понятия

Интерфейс Map [doc]

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Hashtable — реализация такой структуры данных, как хэш-таблица. Она не позволяет использовать null в качестве значения или ключа. Эта коллекция была реализована раньше, чем Java Collection Framework, но в последствии была включена в его состав. Как и другие коллекции из Java 1.0, Hashtable является синхронизированной (почти все методы помечены как synchronized ). Из-за этой особенности у неё имеются существенные проблемы с производительностью и, начиная с Java 1.2, в большинстве случаев рекомендуется использовать другие реализации интерфейса Map ввиду отсутствия у них синхронизации.

WeakHashMap — реализация хэш-таблицы, которая организована с использованием weak references. Другими словами, Garbage Collector автоматически удалит элемент из коллекции при следующей сборке мусора, если на ключ этого элеметна нет жёстких ссылок.

Интерфейс List [doc]

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Реализации этого интерфейса представляют собой упорядоченные коллекции. Кроме того, разработчику предоставляется возможность доступа к элементам коллекции по индексу и по значению (так как реализации позволяют хранить дубликаты, результатом поиска по значению будет первое найденное вхождение).

ArrayList — как и Vector является реализацией динамического массива объектов. Позволяет хранить любые данные, включая null в качестве элемента. Как можно догадаться из названия, его реализация основана на обычном массиве. Данную реализацию следует применять, если в процессе работы с коллекцией предплагается частое обращение к элементам по индексу. Из-за особенностей реализации поиндексное обращение к элементам выполняется за константное время O(1). Но данную коллекцию рекомендуется избегать, если требуется частое удаление/добавление элементов в середину коллекции. Подробный анализ и описание можно почитать в этом хабратопике.

Интерфейс Set [doc]

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

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

Интерфейс Queue [doc]

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Этот интерфейс описывает коллекции с предопределённым способом вставки и извлечения элементов, а именно — очереди FIFO (first-in-first-out). Помимо методов, определённых в интерфейсе Collection, определяет дополнительные методы для извлечения и добавления элементов в очередь. Большинство реализаций данного интерфейса находится в пакете java.util.concurrent и подробно рассматриваются в данном обзоре.

Заключение

Java Collections Framework содержит большое количество различных структур данных, доступных в JDK «из коробки», которые в большинстве случаев покрывают все потребности при реализации логики приложения. Сравнение временных характеристик основных коллекций, которые зачастую используются в разработке приложений приведено в таблице:

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

При необходимости, разработчик может создать собственную реализацию, расширив или переопределив существующую логику, либо создав свою собственную реализацию подходящего интерфейса с нуля. Также существует некоторое количество готовых решений, которые являются альтернативой или дополнением к Java Collections Framework. Наиболее популярными являются Google Guava и Commons Collections.

Источник

Коллекции в Java

Алгоритмы + Структуры данных = Программы.
Никлаус Вирт.

Введение

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

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Как видим, выбрать есть из чего. Но для начала необходимо освоить базовые коллекции Java которыми пользуются чаще всего. А так же некоторые сторонние библиотеки реализуют интерфейсы Java Collections Framework (пример Guava http://guava-libraries.googlecode.com/svn/tags/release05/javadoc/overview-tree.html). То есть знание иерархии классов базовых коллекций позволит более быстро освоить сторонние библиотеки.

Базовые интерфейсы

В библиотеке коллекций Java существует два базовых интерфейса, реализации которых и представляют совокупность всех классов коллекций:

Интерфейс Collection

Давайте рассмотрим основные интерфейсы, относящиеся к Collection:

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Как видно с диаграммы, интерфейс Collection не является базовым (какая интрига :D). Интерфейс Collection расширяет интерфейс Iterable, у которого есть только один метод iterator(). Это значит что любая коллекция, которая есть наследником Iterable должна возвращать итератор.

Реализации интерфейса List

Сразу смотрим на иерархию классов.

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

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

Часто на собеседованиях спрашивают про отличия ArrayList и LinkedList. И какой когда нужно использовать. См. вопрос собеседования: http://www.quizful.net/interview/java/54AubfnDy6Ti

Реализации интерфейса Set

Смотрим следующую диаграмму. Пытаемся вникнуть 🙂

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Если Вы хотите использовать HashSet для хранения объектов СВОИХ классов, то вы ДОЛЖНЫ переопределить методы hashCode() и equals(), иначе два логически-одинаковых объекта будут считаться разными, так как при добавлении элемента в коллекцию будет вызываться метод hashCode() класса Object (который скорее-всего вернет разный хэш-код для ваших объектов).
Важно отметить, что класс HashSet не гарантирует упорядоченности элементов, поскольку процесс хеширования сам по себе обычно не порождает сортированных наборов. Если вам нужны сортированные наборы, то лучшим выбором может быть другой тип коллекций, такой как класс TreeSet.

Реализации интерфейса Queue

Здесь я привел очень упрощенную иерархию.

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Реализации интерфейса Map

Интерфейс Map соотносит уникальные ключи со значениями. Ключ — это объект, который вы используете для последующего извлечения данных. Задавая ключ и значение, вы можете помещать значения в объект карты. После того как это значение сохранено, вы можете получить его по ключу. Интерфейс Map — это обобщенный интерфейс, объявленный так, как показано ниже.

Здесь К указывает тип ключей, а V — тип хранимых значений.

Иерархия классов очень похожа на иерархию Set’а:

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

HashMap — основан на хэш-таблицах, реализует интерфейс Map (что подразумевает хранение данных в виде пар ключ/значение). Ключи и значения могут быть любых типов, в том числе и null. Данная реализация не дает гарантий относительно порядка элементов с течением времени. Хорошая статья http://habrahabr.ru/post/128017/

Устаревшие коллекции

Следующие коллекции являются устаревшими, и их использование не рекомендуется, но не запрещается.

1. Enumeration — аналог интерфейса Iterator.

2. Vector — аналог класса ArrayList; поддерживает упорядоченный список элементов, хранимых во «внутреннем» массиве.

3. Stack — класс, производный от Vector, в который добавлены методы вталкивания (push) и выталкивания (pop) элементов, так что список может трактоваться в терминах, принятых для описания структуры данных стека (stack).

4. Dictionary — аналог интерфейса Map, хотя представляет собой абстрактный класс, а не интерфейс.

5. Hashtable — аналог HashMap.

Все методы Hashtable, Stack, Vector являются синхронизированными, что делает их менее эффективными в одно поточных приложениях.

Синхронизированные коллекции

Получить синхронизированные объекты коллекций можно с помощью статических методов synchronizedMap и synchronizedList класса Collections.

Map m = Collections.synchronizedMap(new HashMap());
List l = Collections.synchronizedList(new ArrayList());

Кроме того всегда существует возможность «классической» синхронизации с помощью блока synchronized.

Собираем все воедино

Итак, смотрим на получившейся диаграмму классов:

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Как видим диаграмма достаточно массивная. Но такая архитектура считается эталонной в OOП.

Заключение

Если Вам понравилась статья, проголосуйте за нее

Голосов: 187 Голосовать какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Источник

Какие данные могут хранить коллекции java

1. Что такое коллекция?

Они представляют собой реализации абстрактных структур данных, поддерживающих различные способы хранения данных, а также операции добавления, удаления и изменения элементов. Т.е. это набор интерфейсов и реализующих их классов.

2. Назовите преимущества использования коллекций?

отсутствует необходимость следить за размерами коллекции (в отличае от массива);

позволяют сократить количество кода и требуют меньше усилий для реализации, т.к. в коллекциях реализовано много методов по добавлению, удалению, сортировке элементов и т.п.;

если правильно подобрать коллекцию, то можно увеличить производительность программы;

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

3. Какие данные могут хранить коллекции?

Коллекции могут хранить любые ссылочные типы данных.

4. Какие есть типы коллекций Как они характеризуются?

Справочник по Java Collections Framework https://habr.com/ru/post/237043/

5. Назовите основные реализации List, Set, Map?

List: ArrayList, LinkedList

Set: HashSet, LinkedHashSat, TreeSet

Map: HashMap, LinkedHashMap, TreeMap

6. В чём отличие ArrayList от LinkedList?

+ меньше расходует памяти на хранение элементов;

увеличение ArrayList происходит медленно;

при вставке или удалении элемента в середину или в начало, приходится переписывать все элементы;

+ быстрая вставка и удаление в середину списка (переписать next и previous и всё);

долгий поиск в середине (нужно перебрать все элементы);

Очевидно, что плюсы одного являются минусами второго. В среднем, сложности одинаковые, но все же ArrayList предпочтительнее использовать. LinkedList рекомендуется использовать, только когда преобладает удаление или вставка в начало или конец списка.

7. В чём отличие HashSet от TreeSet?

HashSet хранит данные в произвольном порядке (хранит свои значения как ключи HashMap ).

TreeSet хранит данные в отсортированном виде (в основе реализации бинарное красно-черное дерево).

8. В чём отличие Set от Map?

сет это список ключей от мапы.

9. Как задается порядок следования объектов в коллекции Как отсортировать коллекцию?

Можно отсортировать с помощью интерфейса Comparable или интерфейса Comparator :

10. Чем отличается Comparable от Comparator?

Разница:

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

Comparator позволает определить логику сравнения объектов определенного ссылочного типа вне реализации этого типа и эту логику можно в любой момент подменить.

Примеры:

11. Что такое сортировка по принципу Natural Order?

Некоторые классы из коробки реализуют естественный порядок natural order для сортировки:

12. Что такое equals и hashcode?

Методы, необходимые для определения равенства объектов.

hashcode возвращает число, являющееся уникальным идентификатором объекта. Это алгоритм, который позволяет множество значений объектов сузить до какого-то натурального количества.

equals сравнивает объекты по значению их полей.

13. Какие есть способы перебора всех элементов List?

Есть список стран, его нужно перебрать

функция forEach()

14. Как реализован цикл foreach?

15. В чем разница между Iterator и ListIterator?

16. Как происходит удаление элементов из ArrayList?

Находится заданный элемент. Далее сдвигаются влево на один элемент все последующие (с большим индексом) элементы, а значение size уменьшается на 1.

Непосредственно под капотом:

17. Как происходит удаление элементов из LinkedList?

Заменяются ссылки previous и next у соседних элементов.

18. Расскажите иерархию интерфейсов Collections framework?

Справочник по Java Collections Framework https://habr.com/ru/post/237043/

19. Назовите основные методы интерфейса Collections?

20. Может ли null использоваться в качестве ключа в Map?

21. Может ли Set содержать null?

для HashSet работает. TreeSet — только для первого элемента.

22. Как преобразовать массив строк в ArrayList?

23. Как отсортировать список в обратном порядке?

24. Какие реализации SortedSet вы знаете и в чем их особенность?

TreeSet все равно в каком порядке вы добавляете в него элементы, преимущества этой структуры данных будут сохраняться.

25. В каких случаях разумно использовать массив, а не ArrayList?

Рекомендация от Oracle: используйте ArrayList вместо массивов.

Если ответить на этот вопрос нужно по-другому, то можно сказать следующее: Массивы могут быть быстрее и кушать меньше памяти. Списки теряют в производительности из-за возможности автоматического увеличения размера и сопутствующих проверок.

26. Какие коллекции синхронизированы?

Получение синхронизированной коллекции из не синхронизированной:

Источник

Собеседование по Java — коллекции (Collections) (вопросы и ответы)

Список вопросов и ответов по теме “Коллекции в Java”.

К списку вопросов по всем темам

Вопросы

1. Дайте определение понятию “коллекция”.
2. Назовите преимущества использования коллекций.
3. Какие данные могут хранить коллекции?
4. Какова иерархия коллекций?
5. Что вы знаете о коллекциях типа List?
6. Что вы знаете о коллекциях типа Set?
7. Что вы знаете о коллекциях типа Queue?
8. Что вы знаете о коллекциях типа Map, в чем их принципиальное отличие?
9. Назовите основные реализации List, Set, Map.
10. Какие реализации SortedSet вы знаете и в чем их особенность?
11. В чем отличия/сходства List и Set?
12. Что разного/общего у классов ArrayList и LinkedList, когда лучше использовать ArrayList, а когда LinkedList?
13. В каких случаях разумно использовать массив, а не ArrayList?
14. Чем отличается ArrayList от Vector?
15. Что вы знаете о реализации классов HashSet и TreeSet?
16. Чем отличаются HashMap и TreeMap? Как они устроены и работают? Что со временем доступа к объектам, какие зависимости?
17. Что такое Hashtable, чем она отличается от HashMap? На сегодняшний день она deprecated, как все-таки использовать нужную функциональность?
18. Что будет, если в Map положить два значения с одинаковым ключом?
19. Как задается порядок следования объектов в коллекции, как отсортировать коллекцию?
20. Дайте определение понятию “итератор”.
21. Какую функциональность представляет класс Collections?
22. Как получить не модифицируемую коллекцию?
23. Какие коллекции синхронизированы?
24. Как получить синхронизированную коллекцию из не синхронизированной?
25. Как получить коллекцию только для чтения?
26. Почему Map не наследуется от Collection?
27. В чем разница между Iterator и Enumeration?
28. Как реализован цикл foreach?
29. Почему нет метода iterator.add() чтобы добавить элементы в коллекцию?
30. Почему в классе iterator нет метода для получения следующего элемента без передвижения курсора?
31. В чем разница между Iterator и ListIterator?
32. Какие есть способы перебора всех элементов List?
33. В чем разница между fail-safe и fail-fast свойствами?
34. Что делать, чтобы не возникло исключение ConcurrentModificationException?
35. Что такое стек и очередь, расскажите в чем их отличия?
36. В чем разница между интерфейсами Comparable и Comparator?
37. Почему коллекции не наследуют интерфейсы Cloneable и Serializable?

Ответы

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

1. Дайте определение понятию “коллекция”.

Коллекциями/контейнерами в Java принято называть классы, основная цель которых – хранить набор других элементов.

2. Назовите преимущества использования коллекций.

Массивы обладают значительными недостатками. Одним из них является конечный размер массива, как следствие, необходимость следить за размером массива. Другим — индексная адресация, что не всегда удобно, т.к. ограничивает возможности добавления и удаления объектов. Чтобы избавиться от этих недостатков уже несколько десятилетий программисты используют рекурсивные типы данных, такие как списки и деревья. Стандартный набор коллекций Java служит для избавления программиста от необходимости самостоятельно реализовывать эти типы данных и снабжает его дополнительными возможностями.

3. Какие данные могут хранить коллекции?

Коллекции могут хранить любые ссылочные типы данных.

4. Какова иерархия коллекций?

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

Здесь следует обратить внимание, что interface Map не входит в иерархию interface Collection.

С Java 1.6 классы TreeSet и TreeMap имплементируют интерфейсы NavigableSet и NavigableMap, которые расширяют интерфейсы SortedSet и SortedMap соответственно (SortedSet и SortedMap расширяют Set и Map).

Подробная статья про коллекции с описанием основных методов: http://www.quizful.net/post/Java-Collections

5. Что вы знаете о коллекциях типа List?

List — это упорядоченный список. Объекты хранятся в порядке их добавления в список. Доступ к элементам списка осуществляется по индексу.

6. Что вы знаете о коллекциях типа Set?

7. Что вы знаете о коллекциях типа Queue?

Queue — коллекция, предназначенная для хранения элементов в порядке, нужном для их обработки. В дополнение к базовым операциям интерфейса Collection, очередь предоставляет дополнительные операции вставки, получения и контроля.

Очереди обычно, но не обязательно, упорядочивают элементы в FIFO (first-in-first-out, «первым вошел — первым вышел») порядке.

Методы element() и peek() возвращают (но не удаляют) верхушку очереди.

java.util.Queue реализует FIFO–буфер. Позволяет добавлять и получать объекты. При этом объекты могут быть получены в том порядке, в котором они были добавлены.

Подробнее http://www.seostella.com/ru/article/2012/08/09/kollekcii-collections-v-java-queue.html

8. Что вы знаете о коллекциях типа Map, в чем их принципиальное отличие?

Интерфейс java.util.Map используется для отображения каждого элемента из одного множества объектов (ключей) на другое (значений). При этом, каждому элементу из множества ключей ставится в соответствие множество значений. В то же время одному элементу из множества значений может соответствовать 1, 2 и более элементов из множества ключей. Интерфейс java.util.Map описывает функциональность ассоциативных массивов.

http://developer.alexanderklimov.ru/android/java/map.php

9. Назовите основные реализации List, Set, Map.

ИнтерфейсКласс/РеализацияОписание
ListArrayListСписок
LinkedListСписок
VectorВектор
StackСтек
SetHashSetМножество
TreeSetМножество
SortedSet (расширяющий интерфейс)Отсортированное множество
MapHashMapКарта/Словарь
TreeMapКарта/Словарь
SortedMap (расширяющий интерфейс)Отсортированный словарь
HashtableХеш-таблица

10. Какие реализации SortedSet вы знаете и в чем их особенность?

Реализации: java.util.TreeSet — коллекция, которая хранит свои элементы в виде упорядоченного по значениям дерева. TreeSet инкапсулирует в себе TreeMap, который в свою очередь использует сбалансированное бинарное красно-черное дерево для хранения элементов. TreeSet хорош тем, что для операций add, remove и contains потребуется гарантированное время log(n).

11. В чем отличия/сходства List и Set?

12. Что разного/общего у классов ArrayList и LinkedList, когда лучше использовать ArrayList, а когда LinkedList?

какие данные могут хранить коллекции java. Смотреть фото какие данные могут хранить коллекции java. Смотреть картинку какие данные могут хранить коллекции java. Картинка про какие данные могут хранить коллекции java. Фото какие данные могут хранить коллекции java

ОписаниеОперацияArrayListLinkedList
Взятие элементаgetБыстроМедленно
Присваивание элементаsetБыстроМедленно
Добавление элементаaddБыстроБыстро
Вставка элементаadd(i, value)МедленноБыстро
Удаление элементаremoveМедленноБыстро

Если необходимо вставлять (или удалять) в середину коллекции много элементов, то лучше использовать LinkedList. Во всех остальных случаях – ArrayList.

LinkedList требует больше памяти для хранения такого же количества элементов, потому что кроме самого элемента хранятся еще указатели на следующий и предыдущий элементы списка, тогда как в ArrayList элементы просто идут по порядку

Из лекции javarush.ru
Структуры данных в картинках. LinkedList: http://habrahabr.ru/post/127864/

13. В каких случаях разумно использовать массив, а не ArrayList?

Если коротко, то Oracle пишет — используйте ArrayList вместо массивов. Если ответить на этот вопрос нужно по-другому, то можно сказать следующее: массивы могут быть быстрее и кушать меньше памяти. Списки теряют в производительности из-за возможности автоматического увеличения размера и сопутствующих проверок. Плюс к этому, что размер списка увеличивается не на 1, а на большее кол-во элементов (+15)*. Так же доступ к [10] в массиве может быть быстрее чем вызов get(10) у списка.

*Читатель прислал комментарий «У ArrayList увеличение происходит в 1.5 раза. int newCapacity = oldCapacity + (oldCapacity >> 1);».

Структуры данных в картинках. ArrayList: http://habrahabr.ru/post/128269/
Еще о ArrayList на сайте http://developer.alexanderklimov.ru/android/java/arraylist.php

14. Чем отличается ArrayList от Vector?

Vector deprecated. У Vector некоторые методы синхронизированы и поэтому они медленные. В любом случае Vector не рекомендуется использовать вообще.

15. Что вы знаете о реализации классов HashSet и TreeSet?

HashSet реализован на основе хеш-таблицы, а TreeSet — на основе бинарного дерева.

Подробнее о Set, HashSet, LinkedHashSet, TreeSet: http://developer.alexanderklimov.ru/android/java/set.php
Годный ответ на StackOverflow http://stackoverflow.com/questions/1463284/hashset-vs-treeset

16. Чем отличаются HashMap и TreeMap? Как они устроены и работают? Что со временем доступа к объектам, какие зависимости?

В целом ответ про HashSet и TreeSet подходит и к этому вопросу.

TreeMap реализован на красно-черном дереве, время добавления/поиска/удаления элемента — O(log N), где N — число элементов в TreeMap на данный момент.

У HashMap время доступа к отдельному элементу — O(1) при условии, что хэш-функция ( Object.hashCode() ) определена нормально (что является правдой в случае Integer ).

Структуры данных в картинках. HashMap: http://habrahabr.ru/post/128017/

17. Что такое Hashtable, чем она отличается от HashMap? На сегодняшний день она deprecated, как все-таки использовать нужную функциональность?

http://stackoverflow.com/questions/40471/differences-between-hashmap-and-hashtable

18. Что будет, если в Map положить два значения с одинаковым ключом?

Последнее значение перезапишет предыдущее.

19. Как задается порядок следования объектов в коллекции, как отсортировать коллекцию?

В этом классе четыре конструктора:

ТгееМар() — создает пустой объект с естественным порядком элементов;
TreeМар(Comparator с) — создает пустой объект, в котором порядок задается объектом сравнения с;
ТгееМар(Map f) — создает объект, содержащий все элементы отображения f, с естественным порядком его элементов;
ТгееМар(SortedMap sf) — создает объект, содержащий все элементы отображения sf, в том же порядке.

Интерфейс Comparator описывает два метода сравнения:

Для каждой коллекции можно реализовать эти два метода, задав конкретный способ сравнения элементов, и определить объект класса SortedMap вторым конструктором. Элементы коллекции будут автоматически отсортированы в заданном порядке.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *