Макроуправление коллекцией и картографическими интерфейсами серии Java Collection

Java

Макроуправление коллекцией и картографическими интерфейсами серии Java Collection

Здравствуйте, все, новогодний день придет, желаю заранее заранее, обратите внимание на безопасность и пойти домой, чтобы встретить свою семью как можно скорее, и откройте свое сердце. ОК, вырезать в эту статью, эта статья, я думаю, что все еще важнее, потому что я собираюсь описать этот кусок коллекции Java в макросе. Старая рутина, структура статьи:

  1. Отношения наследования между классами коллекций Java
  2. Введение в каждый модуль макроса
  3. Преобразование между коллекциями и коллекциями, преобразования между коллекциями и массивами

1. Отношения наследования между классами коллекций Java

Класс коллекции Java в основном получен из двух интерфейсов:Сбор и КАРТА, Collection и Map являются корневыми интерфейсами Java Collections Framework. Вот две картинки:

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

2. Знакомство с каждым макромодулем

2.1 Интерфейс коллекции

Интерфейс коллекцииSet,Queue,Listродительский интерфейс. Интерфейс Collection определяет множество методов, которые его подклассы реализуют для реализации операций с данными.

Видно, что использование коллекции включает в себя: добавление элементов, удаление элементов, возвращение количества коллекций коллекции и очистки коллекций. Акцент делается наIterator(), возвращаемое значение этого метода — Iterator.Этот итератор выглядит так

public interface Collection<E> extends Iterable<E> 

Пример использования:

Collection<Day> days = new ArrayList<Day>();
Iterator<Day> iterator = days.iterator();
        while(iterator.hasNext()){//判断是否有下一个元素
            Day next = iterator.next();//取出该元素
            //逐个遍历,取得元素后进行后续操作
            .....
        }

Кстати, при обходе коллекции Map, хоть Map и не наследует Iterable, не беда, его можно преобразовать в набор, а потом пройти:

  • Первый тип (говорят, что КПД выше второго типа, младший брат не проверял):
Map map = new HashMap();
    Iterator iter = map.entrySet().iterator();
    while (iter.hasNext()) {
        Map.Entry entry = (Map.Entry) iter.next();
        Object key = entry.getKey();
        Object val = entry.getValue();
    }
  • Секунда:
Map map = new HashMap();
Iterator iter = map.keySet().iterator();
    while (iter.hasNext()) {
    Object key = iter.next();
    Object val = map.get(key);
}

Во-вторых, отмечено, что при использовании Iterable для обхода Collection, когда элементы в пределах типа объекта Collection, .next возвращает указатель. Это поверхностная копия.

2.1.1 Набор коллекции

Набор похож на банку, и между множеством объектов, «брошенных» в Набор, нет очевидного порядка. Набор наследуется от интерфейса Collection,не может содержать повторяющиеся элементы(Помните, это общее свойство в иерархии классов Set). Set судит, что два объекта одинаковы, не используя оператор "==", а в соответствии с методом equals. То есть, когда мы добавляем новый элемент, если сравнение равенства между новым объектом элемента и существующим объектом в наборе возвращает false, набор примет новый объект элемента, в противном случае он будет отклонен. Из-за этого ограничения Set при использовании коллекции Set следует обратить внимание на два момента:

  • Реализуйте допустимый метод equals(Object) для реализующего класса элементов в коллекции Set.
  • Для конструктора Set входящий параметр Collection не может содержать повторяющиеся элементы.

Уровень API, установленный набор в основном такой же, как коллекция сбора, и дополнительные дополнительные методы не доступны. На самом деле, набор коллекции, просто небольшое поведение (набор не позволяет повторять элементы).

2.1.2 Коллекция списков

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

Уровень API: Список, как подинтерфейс интерфейса Коллекции, может использовать все методы интерфейса Коллекции. А поскольку List — это упорядоченная коллекция, в коллекцию List добавлены некоторые методы для управления элементами коллекции в соответствии с индексом.. следующее:

  • void add(int index, Object element): вставить указанный элемент в указанную позицию в списке.
  • boolean addAll(int index, Collection<? extends E> c): Набор всех элементов в c вставляется в индекс в указанной позиции в списке.
  • Object get(index): возвращает элемент в указанной позиции в списке.
  • int indexOf(Object o): возвращает индекс первого появления указанного элемента в этом списке или -1, если этот список не содержит элемента.
  • int lastIndexOf(Object o): возвращает индекс последнего вхождения указанного элемента в этом списке или -1, если список не содержит этого элемента.
  • Object remove(int index): удаляет элемент в указанной позиции в списке.
  • Набор объектов (индекс int, элемент объекта): заменить элемент в указанной позиции в списке указанным элементом.
  • List subList(int fromIndex, int toIndex): возвращает подмножество всех элементов коллекции между указанными fromIndex (включительно) и toIndex (исключительно) в списке.
2.1.3 Сбор очереди

Очередь для моделирования «очереди» такой структуры данных (FIFO FIFO). Удерживает голову очереди, хранящуюся в очереди, самый длинный элемент, конец очереди, хранящегося в очереди, удерживает элементы в кратчайшие сроки. Новый элемент вставлен (предложение) на хвост очереди, операция Access (Опрос) возвращает голову элемента очереди, очередь не позволяет элементу очереди случайного доступа.

можно увидеть,Добавлено предложение и опрос для описания семантики очередей..

2.2 Интерфейс карты

Карта используется для хранения данных с «отношением отображения», поэтому в коллекции Map хранятся два набора значений, один набор значений используется для хранения ключа в карте, а другой набор значений используется для хранения значения на карте. И ключ, и значение могут быть данными любого ссылочного типа. Ключ Карты не допускается повторять, то есть сравнение любых двух ключей одного и того же объекта Карты через метод equals всегда возвращает false. Что касается карты, мы должны понимать ее с точки зрения повторного использования кода.Java состоит в том, чтобы добиться карты, то всем упакованным нулевым значением реализуется на собрании набора карт

  • Форма хранения набора ключей в этих классах реализации и подинтерфейсах Map точно такая же, как и у набора Set (то есть ключ нельзя повторять)
  • Отношения с набором Set: Если вы поместите все ключи в Map вместе, они образуют набор Set (все ключи не имеют порядка, и ключи не могут повторяться), на самом деле Map действительно содержит наборkeySet(), который используется для возврата коллекции Set, состоящей из всех ключей в Map.

API:

Наиболее типичным использованием набора карт является добавление и удаление пар ключ-значение попарно, а затем определение того, содержит ли карта указанный ключ и содержит ли она указанное значение.Вы также можете получить набор всех ключей с помощью метода keySet(), предоставляемого Map, а затем использовать цикл foreach для прохождения всех ключей Map и прохождения всех значений в соответствии с ключом..

3. Преобразование между коллекцией и сбором, преобразование между сбором и массивом

3.1 Преобразование между коллекциями и массивами

  • Преобразовать массив в список:Array.asList() может преобразовать массив в список.
  • Преобразовать коллекцию в массивМетод toArray определен в интерфейсе :Collection.

3.1 Преобразование между наборами и наборами

Карта - "Коллекция:Map.keySet(), entrySet(), .values() Три API

Список《---》Установить《---》Очередь:

        //Set--》List
        List<String> list3 = new ArrayList<String>(new HashSet<String>());   
        //List--》Set
        Set<String> set = new HashSet<String>(new ArrayList<String>());  

Грубо говоря, он преобразуется строительным методом.

Преобразуйте эту часть в справочный блог:

Эпилог

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