Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Трудный способ создания массивов
Более трудный способ создания массива заключается в том, чтобы создать его вместе с циклом инициализации его элементов:
Этот код объявляет целочисленный массив из пяти элементов. Если попытаться вставить в массив больше пяти элементов, среда исполнения Java пожалуется и выдаст исключение.
Загрузка массива Чтобы загрузить массив, нужно перебрать целые числа от 1 до длины массива (которую можно определить, вызвав параметр.length этого массива – подробнее об этом ниже). В данном случае мы останавливаемся на 5. Как только массив загружен, к нему можно обращаться, как мы делали это выше:
Работает также следующий синтаксис (впервые появившийся в JDK 5):
Новый синтаксис проще, и в этом разделе буду использовать именно его.
Метод length Это встроенный метод, поэтому его синтаксис не включает обычных скобок. Достаточно ввести слово length, и вы получите длину массива. В языке Java массивы начинаются с нулевой позиции. Так что первый элемент некоторого массива с именем array всегда находится по адресу array [0], а последний – array[array.length – 1].
Индекс элемента Массив можно представить себе как ряд ячеек, в каждой из которых находится элемент определенного типа. Доступ к каждой ячейке осуществляется с помощью индекса:
Чтобы извлечь элемент, нужно обратиться к массиву (по имени) и указать индекс местоположения элемента.
Массив объектов Вы видели массивы простых типов, но они могут содержать и объекты. Поэтому массив в языке Java – наиболее часто употребляемая коллекция. Создание массива объектов java.lang.Integer не сильно отличается от создания массива простых типов. Опять же, это можно сделать двумя способами:
Списки (list) Список представляет собой коллекцию, которая по определению упорядочена, то есть является последовательностью. Так как список упорядочен, можно полностью управлять тем, куда помещаются его элементы. Коллекция Java List может содержать только объекты и строго регламентирует их поведение. List – это интерфейс, так что его экземпляр нельзя создать напрямую. Обычно работают с его реализацией ArrayList:
Обратите внимание, что мы присвоили объект ArrayList переменной типа List. Язык Java позволяет присваивать переменную одного типа переменной другого типа, если это переменная суперкласса или интерфейс, реализованный присваиваемой переменной.
Формальный тип А что такое < Object> в приведенном выше фрагменте кода? Это формальный тип, что указывает компилятору на то, что список List содержит коллекцию типа Object, то есть в List можно помещать что угодно. Если нужно ужесточить ограничения на то, что можно или нельзя помещать в список List, это определение следует переписать так:
Теперь список List может содержать только экземпляры Person.
Использование списков Использовать списки очень легко, как и коллекции Java в целом. Вот некоторые из вещей, которые можно делать сосписками:
Давайте попробуем некоторые из них. Вы уже видели, как создать экземпляр List, создав экземпляр его типа реализации ArrayList, так что с этого и начнем. Чтобы поместить что-то в список List, нужно вызвать метод add():
Метод add() добавляет элемент в конец списка. Чтобы узнать длину списка, нужно вызвать метод size():
Чтобы извлечь элемент из списка, нужно вызвать метод get() и передадть ему индекс требуемого элемента:
На практике список будет содержать записи, или бизнес-объекты, и для их обработки может потребоваться полный перебор. Как это сделать в общем виде? Нужно перебрать коллекцию, что можно сделать, потому что список реализует интерфейс java.lang.Iterable.
Перебираемая коллекция Если коллекция реализует интерфейс java.lang.Iterable, она называется перебираемой (iterable) коллекцией. Это означает, что можно начать с одного конца и перебрать всю коллекцию, элемент за элементом. Специальный синтаксис для итерации по коллекциям, которые реализуют интерфейс Iterable:
Перебор элементов списка Предыдущий пример был абстрактным; а вот более реалистичный:
Этот короткий фрагмент кода делает то же самое, что и более длинный:
В первом фрагменте используется сокращенный синтаксис: в нем нет индексной переменной (в данном случае аа) для инициализации и нет вызова метода get() по отношению к списку. Так как List – это продолжение коллекции java.util.Collection, которая реализует интерфейс Iterable, для перебора любого списока можно использовать сокращенный синтаксис.
Наборы (set) Набор (Set) – это коллекция, которая, по определению, содержит уникальные элементы – без дубликатов. Если списокможет содержать одни и те же объекты сотни раз, то набор может содержать данный объект только один раз. Коллекция Java Set может содержать только объекты и строго регламентирует их поведение. Так как Set является интерфейсом, нельзя создать его экземпляр непосредственно, и я покажу вам один из моих любимых способов его реализации: HashSet. HashSet прост в использовании и напоминает List. Вот некоторые из вещей, которые можно делать с набором:
Использование наборов Отличительной особенностью набора является то, что он гарантирует уникальность своих элементов, но не заботится о порядке их расположения. Рассмотрим следующий код:
Можно было бы ожидать, что набор Set состоит из трех элементов, но на самом деле в нем только два элемента, потому что объект Integer со значением 10 будет добавлен только один раз. Имейте это в виду при переборе наборов:
Скорее всего, объекты будут выведены не в том порядке, в каком их добавляли, потому что Set гарантирует уникальность, но не порядок. Вы убедитесь в этом, если вставите приведенный выше код в метод main() своего классаPerson и выполните его.
Отображения (map) Отображение (Map) – это удобная коллекция, которая позволяет связать один объект (ключ), с другим (значение). Естественно, ключ отображения должен быть уникальным, и он используется для последующего извлечения значений. Коллекция Java Map может содержать только объекты и строго регламентирует их поведение. Так как Map является интерфейсом, нельзя создать его экземпляр непосредственно, и я покажу вам один из моих любимых способов его реализации: HashMap. Вот некоторые операции, которые можно проводить с отображениями:
Использование отображений
Чтобы поместить что-то в отображение, нужно иметь объект-ключ и объект-значение:
В этом примере Map содержит объекты типа Integer с ключом типа String, который служит их строковымпредставлением. Чтобы получить определенное значение Integer, требуется его строковое представление:
Популярное:
|
Последнее изменение этой страницы: 2016-07-14; Просмотров: 635; Нарушение авторского права страницы