Макроуправление коллекцией и картографическими интерфейсами серии Java Collection
Здравствуйте, все, новогодний день придет, желаю заранее заранее, обратите внимание на безопасность и пойти домой, чтобы встретить свою семью как можно скорее, и откройте свое сердце. ОК, вырезать в эту статью, эта статья, я думаю, что все еще важнее, потому что я собираюсь описать этот кусок коллекции Java в макросе. Старая рутина, структура статьи:
- Отношения наследования между классами коллекций Java
- Введение в каждый модуль макроса
- Преобразование между коллекциями и коллекциями, преобразования между коллекциями и массивами
1. Отношения наследования между классами коллекций Java
Класс коллекции Java в основном получен из двух интерфейсов:Сбор и КАРТА, Collection и Map являются корневыми интерфейсами Java Collections Framework. Вот две картинки:
2. Знакомство с каждым макромодулем
2.1 Интерфейс коллекции
Интерфейс коллекцииSet,Queue,Listродительский интерфейс. Интерфейс Collection определяет множество методов, которые его подклассы реализуют для реализации операций с данными.
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>());
Грубо говоря, он преобразуется строительным методом.
Преобразуйте эту часть в справочный блог:
Эпилог
Что ж, макрос точки зрения коллекции, карты должны быть понятны всем, включая семантический (уникальный метод подинтерфейса) дочерний элемент в рамках интерфейса коллекции для достижения. Затем конвертируйте между наборами и так далее, я думаю, что макроуровень важнее, я надеюсь, что вы освоите это.Всем хорошего дня, всех с наступающим Новым годом.