Через вопросы интервью, давайте поймем коллекцию

Java
Через вопросы интервью, давайте поймем коллекцию

предисловие

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

В этой главе в основном представлены соответствующие знания о коллекции и сортируются точки знаний в сочетании с соответствующими вопросами, упомянутыми в интервью. Надеюсь, это поможет вам~ На основе JDK1.8, если есть какая-либо ошибка, я надеюсь, что вы можете указать на нее!

Вовлеченные вопросы о коллекции, связанные с коллекцией

  • 1. Что такое коллекция?
  • 2. Какие есть типы коллекций в JAVA? Каковы характеристики?
  • 3. Расскажите о родительском классе Collection Collection?
  • 4. В чем разница между массивом и коллекцией?
  • 5. Расскажите об итераторе Iterator
  • 6. Знакомство с несколькими важными классами и интерфейсами в интерфейсе Collection.

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

 来自百度百科的回答:
  1. Коллекции хранятся в пакете java.util.
  2. Классы коллекций хранят ссылки на объекты, а не сами объекты.Для удобства выражения мы называем объекты в коллекции ссылками на объекты в коллекции.
  3. Существует три основных типа коллекций: set (набор), list (список) и map (карта).
  4. Интерфейс коллекции разделен на: Коллекция и Карта, список и набор реализуют интерфейс Коллекции.

2. Какие есть типы коллекций в JAVA? Каковы характеристики каждого?

Коллекция двух систем: связанный список списка, набор коллекции

Особенности списка: элементы упорядочены; элементы могут повторяться; элементы имеют индексы (угловые метки). Объекты, хранящиеся в списке, упорядочены и могут повторяться одновременно. Список фокусируется на индексе. Он имеет ряд методов, связанных с индексом, и скорость запроса высока. Потому что при вставке или удалении данных в набор списков это будет сопровождаться перемещением следующих данных, поэтому скорость вставки и удаления данных низкая.

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

В то же время в коллекции есть еще один тип: Map (карта).

Особенности карты: пары ключ-значение, ключи не могут повторяться, значения могут повторяться; В коллекции Map хранятся пары ключ-значение, ключи не могут повторяться, а значения могут повторяться. Значение получается в соответствии с ключом.При обходе коллекции карт сначала получается набор наборов ключа, а набор наборов проходится для получения соответствующего значения.

3. Расскажите о родительском классе Collection Collection?

3.1 Схема архитектуры коллекции

Collection

List (有序集合,允许相同元素和null)
  --LinkedList (非同步,允许相同元素和null,遍历效率低插入和删除效率高)
  --ArrayList (非同步,允许相同元素和null,实现了动态大小的数组,遍历效率高,用的多)
  --Vector(同步,允许相同元素和null,效率低)
   ---Stack(继承自Vector,实现一个后进先出的堆栈)

Set (无序集合,不允许相同元素,最多有一个null元素)
  --HashSet(无序集合,不允许相同元素,最多有一个null元素)

Map (没有实现collection接口,key不能重复,value可以重复,一个key映射一个value)
  --Hashtable (实现Map接口,同步,不允许null作为key和value,用自定义的类当作key的话要复写hashCode和eques方法,)
  --HashMap (实现Map接口,非同步,允许null作为key和value,用的多)
  --WeakHashMap(实现Map接口)

3.2 Основные методы в коллекции

(1) Добавить Boolean Add (E O); Boolean Add (Collection Расширяет e> c);

(2) удалить логическое удаление (объект о); логическое значение removeAll (Collection extends E> c)

пусто очистить();

(3) Суждение
А. Определить, есть ли элемент в коллекции: boolean isEmpty(); б) Определить, содержит ли коллекция элемент: boolean contains(Object o); в) определить, содержит ли коллекция определенные элементы: boolean contains(Collection> c);

(4) Получить А. Получить количество элементов в коллекции: int size(); б) пройтись по всем элементам коллекции: Iterator iterator(); в) Определите, существуют ли одни и те же элементы в двух коллекциях, и сохраните одни и те же элементы в двух коллекциях, чтобы удалить разные элементы: boolean continueAll(Collection> c);

(5) Другое Сбор элементов в массив: Объект [] toArray(); .BT[]toArray();Общий

Java8 новый методПосле JDK 8 интерфейс коллекции также обеспечивает непрерывный или параллельный сбор данных из коллекции: Поток поток () Параллельный поток () В интерфейсе Collection также есть абстрактный класс AbstractCollection: AbstractCollection — это абстрактный класс, который реализует часть интерфейса Collection, реализуя некоторые из самых основных универсальных операций, реализуя сложные и связанные с бизнесом задержки в подклассе. В AbstractCollection есть несколько операций для Contains(), ISEMPTY(), ToArray(), Remove(), CLEAR(). Заинтересованные студенты могут изучить сами, логика относительно проста.

Специальное примечание: Интерфейс списка расширяет ряд методов, наиболее важными и наиболее часто используемыми являются: E get(int index) возвращает элемент по указанному индексу

4. В чем разница между массивом и коллекцией?

Особенности массива:

  1. Массив — это, по сути, непрерывное пространство памяти, используемое для записи нескольких данных одного типа;
  2. Как только данные объявлены, объем памяти фиксируется;
  3. Операции вставки и удаления неудобны, могут перемещать большое количество элементов и приводить к неэффективности;
  4. Поддержка доступа по индексу, который может реализовать произвольный доступ;
  5. Элементы в массиве могут быть примитивными типами данных или ссылочными типами данных.

Особенности коллекции:

  1. Пространство памяти может быть прерывистым, а типы данных могут быть разными;
  2. Объем памяти коллекции можно динамически регулировать;
  3. Операции ввода и удаления могут быть установлены не для перемещения большого количества элементов;
  4. Некоторые поддерживают доступ в подсказке, некоторые нет;
  5. Элементы в коллекции должны иметь ссылочный тип данных (вы храните простое целое число, которое автоматически упаковывается в целое число);

Видно, что массивы и наборы имеют разное хранение данных, доступ, тип, длину и т.д.

5. Расскажите об итераторе Iterator?

  1. Получите соответствующий объект Iterator через объект коллекции
  2. Проверить, существует ли следующий элемент
  3. возьмите элемент и укажите объект итератора на следующий элемент Итератор iterator(): Способ удаления элементов: iterator. Объект должен зависеть от конкретного контейнера, потому что структура данных каждого контейнера отличается. Таким образом, объект итератора реализован внутри контейнера. Для пользователя контейнера конкретная реализация не важна, главное, чтобы объект итератора реализации можно было получить через контейнер, то есть метод итератора.

Расширение знаний: ArrayList внутри метода итератора использует рисунок дизайна - шаблон заводской методики! Заинтересованные студенты могут следовать, чтобы увидеть мою другую статью «Узоры проектирования кратко».

6. Знакомство с несколькими важными классами и интерфейсами в интерфейсе Collection?

Этот вопрос аналогичен второму~ В следующей статье будет больше подробностей!

Две системы сбора: связанный список, список, набор и карта.

Интерфейс списка и введение подкласса

  Список представляет собой упорядоченную коллекцию, с помощью этого интерфейса можно точно контролировать позицию вставки каждого элемента. Пользователь может использовать индекс (позиция элемента в списке, аналогичная индексу массива) для доступа к элементам в списке, который аналогичен массиву Java. В отличие от Set, о котором будет сказано ниже, в List могут быть те же элементы. В дополнение к методу iterator(), который необходим для интерфейса Collection, List также предоставляет метод listIterator(), который возвращает интерфейс ListIterator.По сравнению со стандартным интерфейсом Iterator, ListIterator имеет некоторые методы add() и другие, которые позволяют добавлять, Удаляйте, устанавливайте элементы и перемещайтесь вперед или назад.

Список интерфейсов для достижения распространенных категорий:

  • Класс LinkedList (базовая структура данных представляет собой связанный список, небезопасный для потоков)
  • Класс ArrayList (базовая структура данных представляет собой массив, небезопасный для потоков)
  • Векторный класс   (базовая структура данных представляет собой массив, потокобезопасный)
  • Класс стека (как следует из названия: стек, унаследованный от класса Vector и расширенный)

在后续的文章中我们将一一详细介绍这些类的相关特性!

Введение в интерфейс Set и его подклассы

  Set — это коллекция, которая не содержит повторяющихся элементов, то есть любые два элемента e1 и e2 имеют e1.equals(e2)=false, а Set имеет не более одного нулевого элемента. Очевидно, конструктор Set имеет ограничение, согласно которому входящий параметр Collection не может содержать повторяющиеся элементы.   Примечание. С изменяемыми объектами следует обращаться осторожно. Если изменяемый элемент в наборе меняет свое состояние, вызывая Object.equals(Object)=true, это вызовет некоторые проблемы.

   Общие классы, реализующие интерфейс Set:

  • Класс HashSet (основная структура данных — массив + односвязный список + красно-черное дерево, неупорядоченное)
  • LinkedHashSet (основная структура данных — массив + односвязный список + красно-черное дерево + двусвязный список, неупорядоченный)
  • Класс TreeSet (базовая структура данных красно-черное дерево, упорядоченное)

在后续的文章中我们将一一详细介绍这些类的相关特性!

Введение в интерфейс карты и подклассыПримечание. Map не наследует интерфейс Collection, Map обеспечивает сопоставление ключа со значением. Карта не может содержать один и тот же ключ, и каждый ключ может отображать только одно значение.

Интерфейс карты предоставляет три набора представлений.Содержимое карты можно рассматривать как набор наборов ключей, набор наборов значений или набор сопоставлений ключ-значение.

  • Hashtable Class.
  • Класс HashMap

在后续的文章中我们将一一详细介绍这些类的相关特性!

конец статьи

В этой главе представлена ​​большая часть содержимого интерфейса Сбора данных, которое может появиться в процессе собеседования. Он не вводит подробно его подклассы и принципы, связанные с их реализацией. Этот аспект будет подробно рассмотрен в последующих главах. Добро пожаловать в публичный аккаунт:Программирование кодераПолучайте последние оригинальные технические статьи и соответствующие бесплатные учебные материалы и изучайте технические знания в любое время и в любом месте!

公众号