Коллекции Java: введение
Язык Java поддерживает массивы для хранения нескольких объектов. Массив инициализируется с предопределенным размером во время создания экземпляра. Для поддержки более гибких структур данных существуют коллекции. Коллекция - это структура данных, которая содержит и обрабатывает набор данных. Данные, хранящиеся в коллекции, инкапсулируются, и доступ к данным возможен только с помощью предопределенных методов. Например, разработчик может добавлять элементы в коллекцию с помощью метода. Коллекции используют внутренние массивы для хранения данных, но скрывают сложность управления динамическим размером от разработчика.
Например, если ваше приложение сохраняет данные в объект типа People, вы можете хранить несколько People объектов в коллекции.
Типичные коллекции: стеки, очереди, списки и деревья.
Java обычно предоставляет интерфейс, например List и одну или несколько реализаций для этого интерфейса, например, ArrayList класс и LinkedList реализуют интерфейс List.
Класс или интерфейс, объявление которого имеет один или несколько параметров типа, является универсальным классом или интерфейсом. Например, List определяет один параметр типа List<E>.
Коллекции Java должны быть параметризованы с объявлением типа. Это позволяет компилятору Java проверять, если вы попытаетесь использовать коллекции с неправильным типом объектов. Универсальные шаблоны позволяют типу или методу работать с объектами различных типов, обеспечивая при этом безопасность типов во время компиляции. Перед универсальными шаблонами необходимо привести каждый объект, считанный из коллекции, и если бы вы вставили объект неправильного типа в коллекцию, вы создали бы исключение среды выполнения.
Библиотека коллекции поддерживает лямбда-выражения. Операции над коллекциями в значительной степени упрощают работу с ними.
В следующем коде показан пример создания коллекции типа List, которая параметризуется
import java.util.*; public class MyArrayList { public static void main(String[] args) { // Создаем list List<String> list = Arrays.asList("Yuriy", "Tanya"); // Или вот так List<String> anotherList = new ArrayList<>(); anotherList.add("Yuriy"); anotherList.add("Tanya"); // выводим каждый элемент на консоль с помощью ссылок на методы list.forEach(System.out::println); anotherList.forEach(System.out::println); } }Если вы попытаетесь поместить объект в этот список, который не является String, то получится ошибка компиляции.
/MyArrayList.java:5: error: incompatible types: inference variable T has incompatible bounds List<String> list = Arrays.asList("Yuriy", 3); ^ equality constraints: String lower bounds: Integer,String where T is a type-variable: T extends Object declared in method <T>asList(T...) 1 error
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.