Списки в java
Списки на Java — методы интерфейса List
Интерфейс Java List, java.util.List, представляет упорядоченную последовательность объектов. Элементы, содержащиеся в списке Java, вставлять и удалять в соответствии с порядком их появления в списке.
Каждый элемент в списке Java имеет индекс. Первый элемент в имеет индекс 0, второй элемент имеет индекс 1 и т.д.
Вы можете добавить любой объект в список. Если список не типизирован с использованием Java Generics, то вы можете даже смешивать объекты разных типов (классов) в одном и том же списке.
Java List — это стандартный интерфейс, который является подтипом Java Collection, что означает, что означает, что List наследуется от Collection.
Учебное видео по спискам Java
Если вы предпочитаете смотреть видео вместо чтения текста, вот видео версия этого учебника по Java List:
Java List и Set
Java List и Java Set очень похожи в том, что они оба представляют коллекцию элементов. Тем не менее, есть некоторые существенные различия.
Первое различие между Java List и Java Set состоит в том, что один и тот же элемент может встречаться в списке более одного раза. Это отличается от набора, где каждый элемент может встречаться только один раз.
Второе различие — элементы в List имеют порядок, и элементы могут повторяться в этом порядке. Набор не предполагает порядок элементов, хранящихся внутри.
Реализация List
Будучи подтипом Collection, все методы в интерфейсе Collection также доступны в Listinterface.
Поскольку List — это интерфейс, вам необходимо создать конкретную реализацию интерфейса, чтобы использовать его. Вы можете выбирать между следующими реализациями List в API коллекций Java:
- java.util.ArrayList
- java.util.LinkedList
- java.util.Vector
- java.util.Stack
Также есть параллельные реализации List в пакете java.util.concurrent.
Вот несколько примеров того, как создать экземпляр List:
Как вставить элементы в список Java
Вставить элементы (объекты) в список Java можно методом add (). Вот пример добавления элементов в список Java:
Первые три вызова add () добавляют экземпляр String в конец списка.
Вставить нулевые значения
На самом деле возможно вставить даже нулевые значения в список.
Добавить элементы по определенному индексу
Можно добавить элемент в список по определенному индексу. Интерфейс List имеет версию метода add(), которая принимает индекс в качестве первого параметра, и элемент для вставки в качестве второго параметра. Вот пример вставки элемента с индексом 0.
Если список уже содержит элементы, то теперь они будут перемещаться дальше во внутренней последовательности. Элемент, который имел индекс 0 до того, как новый элемент был вставлен в индекс 0, будет перемещен в индекс 1 и т.д.
Вставляем все элементы из одного списка в другой
Можно добавить все элементы из одного списка в другой. Сделаем это с помощью метода ListaddAll (). Результат представляет собой объединение двух списков.
Этот пример добавляет все элементы из listSource в listDest.
Метод addAll () принимает набор в качестве параметра, поэтому в качестве параметра можно передать список или набор.
Получить элементы из списка Java
Вы можете получить элементы из списка Java, используя индекс элементов. Методом get (int index). Вот пример доступа к элементам списка с использованием индексов элементов:
Также возможно итерировать элементы списка в том порядке, в котором они хранятся внутри.
Как найти элементы в списке Java
Вы можете найти элементы в списке Java, используя один из этих двух методов:
- index()
- LastIndexOf ()Метод indexOf () находит индекс первого вхождения в списке заданного элемента.
Запуск этого кода приведет к следующему результату:
Найти последнее вхождение элемента в списке
Метод lastIndexOf () находит индекс последнего вхождения в списке данного элемента.
Результат, напечатанный при запуске приведенного выше примера будет таков:
Элемент 1 встречается 2 раза. Индекс последнего равен 2.
Проверка: содержит ли список элемент?
Вы можете проверить, содержит ли Java List данный элемент, используя метод List contains ().
Чтобы определить, содержит ли List этот элемент, List будет внутренне выполнять итерации своих элементов и сравнивать каждый элемент с объектом, переданным в качестве параметра.
Поскольку можно добавить нулевые значения в список, фактически можно проверить, содержит ли список нулевое значение.
Очевидно, что если входной параметр для contains () имеет значение null, метод contains () не будет использовать метод equals() для сравнения с каждым элементом, а вместо этого использует оператор ==.
Как удалить элементы из списка Java
Вы можете удалить элементы из списка Java с помощью этих двух методов:
- remove(Object element)
- remove(int index)
remove (Object element) удаляет элемент в списке, если он присутствует. Все последующие элементы, затем перемещаются вверх по списку. Таким образом, их индекс уменьшается на 1.
Этот пример сначала добавляет элемент, а затем снова удаляет его.
Метод List remove (int index) удаляет элемент по указанному индексу.
После выполнения этого примера кода список будет содержать элементы 1 и 2 с индексами 0 и 1.
Очистить список
Интерфейс Java List содержит метод clear (), который удаляет все элементы из списка при вызове. Удаление всех элементов также называется очисткой.
Как сохранить все элементы из одного списка в другом
Метод retainAll () способен сохранять все элементы из одного списка в другом. Другими словами, метод retain () удаляет все элементы, которые не найдены в другом списке.
Результатом является пересечение двух списков.
Узнать количество элементов
Вы можете получить количество элементов вызвав метод size (). Вот пример:
Подсписок списка
Метод subList () может создавать новый List с подмножеством элементов из исходного List.
Метод subList () принимает 2 параметра: начальный индекс и конечный индекс. Начальный индекс — это индекс первого элемента из исходного списка для включения в подсписок.
Конечный индекс является последним индексом подсписка, но элемент в последнем индексе не включается в подсписок. Это похоже на то, как работает метод подстроки Java String.
После выполнения list.subList (1,3) подсписок будет содержать элементы с индексами 1 и 2.
Помните, что исходный список содержит 4 элемента с индексами от 0 до 3. Вызов list.subList (1,3) будет включить индекс 1, но исключить индекс 3, сохраняя тем самым элементы с индексами 1 и 2.
Преобразовать list в set
Вы можете преобразовать список Java в набор(set), создав новый набор и добавив в него все элементы из списка. Набор удалит все дубликаты.
Таким образом, результирующий набор будет содержать все элементы списка, но только один раз.
Обратите внимание, что список содержит элемент String 3 два раза. Набор будет содержать эту строку только один раз. Таким образом, результирующий набор будет содержать строки: element 1 , element 2 and element 3 .
Общие списки
По умолчанию вы можете поместить любой объект в список, но Java позволяет ограничить типы объектов, которые вы можете вставить в список.
Этот список теперь может содержать только экземпляры MyObject. Затем вы можете получить доступ к итерации его элементов без их приведения.
Сортировка
Вы можете отсортировать список с помощью метода Collections sort ().
Если Список содержит объекты, которые реализуют интерфейс Comparable (java.lang.Comparable), тогда эти объекты можно сравнивать. В этом случае вы можете отсортировать список следующим образом:
Класс Java String реализует интерфейс Comparable, вы можете отсортировать их в естественном порядке, используя метод Collections sort ().
Сортировка списка с помощью Comparatorimplementation
Если объекты не реализуют интерфейс Comparable или если вы хотите отсортировать объекты в порядке, отличном от их реализации compare (), вам необходимо использовать Comparatorimplementation (java.util.Comparator).
Вот код сортировки:
Обратите внимание на реализацию Comparator в приведенном выше примере. Эта реализация сравнивает только поле марки автомобилей Car. Можно создать другую реализацию Comparator, которая сравнивает номерные знаки или даже количество дверей в автомобилях.
Возможно реализовать Comparator с использованием Java Lambda. Вот пример, который сортирует объекты List of Car с использованием трех различных реализаций интерфейса Comparator, каждая из которых сравнивает экземпляры Car по своему полю:
Итерации
Вы можете выполнить итерацию списка несколькими различными способами. Три наиболее распространенных способа:
- Использование итератора
- Использование цикла for-each
- Использование цикла for
- Использование API Java Stream
Итерация списка с помощью итератора
Первый способ итерации списка — использовать итератор Java.
Вызывая метод iterator () интерфейса List.
Вызов hasNext () выполняется внутри цикла while.
Внутри цикла while вы вызываете метод Iterator next () для получения следующего элемента, на который указывает Iterator.
Если список задан с использованием Java Generics, вы можете сохранить некоторые объекты внутри цикла while.
Итерация списка с использованием цикла For-Each
Второй способ итерации List — использовать цикл for.
Цикл for выполняется один раз для каждого элемента. Внутри цикла for каждый элемент, в свою очередь, связан с переменной obj.
Можно изменить тип переменной внутри цикла for.
Итерация списка с помощью цикла For
Третий способ итерации List — использовать стандартный цикл for, подобный следующему:
Цикл for создает переменную int и инициализирует ее 0. Затем она зацикливается, пока переменная int i меньше размера списка. Для каждой итерации переменная i увеличивается.
Внутри цикла for обращаемся к элементам List с помощью метода get (), передавая в качестве параметра переменную i.
Опять же, если список напечатан с использованием Java Generics, например, для для строки, то вы можете использовать универсальный тип списка в качестве типа для локальной переменной, которая присваивается каждому элементу списка во время итерации.
Тип локальной переменной внутри цикла for теперь String. Поскольку список обычно типизируется как String, он может содержать только объекты String.
Следовательно, компилятор знает, что только метод String может быть возвращен из метода get (). Поэтому вам не нужно приводить элемент, возвращенный get (), в String.
Перебор списка с использованием API Java Stream
Четвертый способ итерации через API Java Stream. Для итерации вы должны сначала получить поток из списка. Получение потока из списка в Java выполняется путем вызова метода Liststream ().
Как только вы получили поток из списка, вы можете выполнить итерацию потока, вызвав его метод forEach ().
Вызов метода forEach () заставит Stream выполнить внутреннюю итерацию всех элементов потока.
Средняя оценка / 5. Количество голосов:
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Интерфейс Java List Collection с примерами
Интерфейс Java List, java.util.List, представляет упорядоченную последовательность объектов. Элементы, содержащиеся в списке Java, могут быть вставлены, повторены и удалены в соответствии с порядком их появления в нем. Порядок элементов — вот почему эта структура данных называется списком.
Каждый элемент имеет индекс: первый элемент — 0, второй — 1 и т. д. Индекс означает «сколько элементов находится в начале». Таким образом, первый элемент находится на расстоянии 0 элементов от начала списка, потому что он находится в начале.
Вы можете добавить любой объект в список. Если он не типизирован с использованием Java Generics, то вы можете даже смешивать объекты разных типов (классов) в одном и том же списке. Однако на практике это происходит не часто.
Интерфейс List является стандартным интерфейсом и подтипом интерфейса Collection, что означает, что List наследуется от Collection.
List против Set
Интерфейсы List и Set очень похожи в том, что они оба представляют коллекцию элементов. Тем не менее, есть некоторые существенные различия, отраженные в методах, предлагаемых интерфейсами:
- Один и тот же элемент может встречаться в списке более одного раза. Это отличается от набора, где каждый элемент может встречаться только один раз.
- Элементы в List имеют порядок, и могут повторяться в этом порядке. Набор не дает никаких обещаний относительно порядка элементов, хранящихся внутри.
Реализации
Будучи подтипом Collection, все методы в интерфейсе Collection также доступны в интерфейсе List.
Поскольку List — это интерфейс, вам нужно создать конкретную реализацию интерфейса, чтобы использовать его, либо выбрать между следующими в API коллекций:
- java.util.ArrayList;
- java.util.LinkedList;
- java.util.Vector;
- java.util.Stack.
Также есть параллельные реализации в пакете java.util.concurrent.
Вот несколько примеров того, как создать экземпляр List:
Как вставить элементы
Вы вставляете элементы (объекты) в список, используя его метод add():
Первые три вызова add() добавляют экземпляр String в конец списка.
Как вставить нулевые значения
Как вставить элементы по определенному индексу
Можно вставить элемент в список по определенному индексу. Интерфейс List имеет версию метода add(), которая принимает индекс в качестве первого параметра, и элемент для вставки в качестве второго:
Если список уже содержит элементы, они теперь будут перемещены дальше во внутренней последовательности списка. Элемент, который имел индекс 0 до того, как новый элемент был вставлен в индекс 0, будет перемещен в индекс 1 и т. д.
Как вставить все элементы из одного списка в другой
Сделать это можно с помощью метода List addAll(). Результирующий список представляет собой объединение двух. Вот пример:
В этом примере все элементы из listSource добавляются в listDest. Метод addAll() принимает коллекцию в качестве параметра, поэтому вы можете передать в качестве параметра список или набор. Другими словами, можете добавить все элементы из списка или набора с помощью addAll().
Как получить элементы
Для этого используется индекс элементов, а также метод get(int index):
Также возможно итерировать элементы списка в том порядке, в котором они хранятся внутри.
Как найти элементы
Используется один из этих двух методов:
Метод indexOf() находит индекс первого вхождения в списке заданного элемента:
Запуск этого кода приведет к следующему выводу:
Как найти последнее вхождение элемента в списке
Метод lastIndexOf() находит индекс последнего вхождения в списке данного элемента:
Выходные данные, напечатанные при запуске приведенного выше примера, будут следующими:
Элемент 1 элемент встречается 2 раза в списке. Индекс последнего появления равен 2.
Проверка, содержится ли элемент
Используется метод List contains():
Результатом выполнения этого примера будет:
… потому что список действительно содержит элемент.
Чтобы определить, содержит ли List этот элемент, List будет внутренне выполнять итерации своих элементов и сравнивать каждый с объектом, переданным в качестве параметра. Для сравнения используется метод равенства.
Поскольку можно добавить нулевые значения в список, фактически можно проверить, содержит ли он их:
Очевидно, что если входной параметр для contains() имеет значение null, метод contains() не будет использовать метод equals() для сравнения с каждым элементом, а вместо этого использует оператор ==.
Как удалить элементы
Вы можете удалить элементы с помощью этих двух методов:
- remove(Object element);
- remove(int index).
remove(Object element) удаляет этот элемент в списке, если он присутствует. Все последующие элементы затем перемещаются вверх по списку. Таким образом, их индекс уменьшается на 1. Вот пример:
Этот пример сначала добавляет элемент в список, а затем снова удаляет его.
Метод remove(int index) удаляет элемент по указанному индексу. Все последующие элементы в списке затем перемещаются вверх. Таким образом, их индекс уменьшается на 1. Вот пример:
После запуска этого примера кода список будет содержать элементы 1 и 2 элемента Java String с индексами 0 и 1. Первый элемент (элемент 0) был удален из списка.
Как удалить все элементы
Интерфейс List содержит метод clear(), который удаляет все элементы из списка при вызове. Также называется очисткой списка. Вот простой пример:
Сначала создается новый список. Во-вторых, два элемента добавляются в список. В-третьих, вызывается метод clear(). После вызова метода clear() список будет полностью пустым.
Как сохранить все элементы из одного списка в другом
Интерфейс Java List имеет метод retainAll(), который способен сохранять все элементы из одного списка, которые также присутствуют в другом списке. Другими словами, метод retain() удаляет все элементы из целевого списка, которые не найдены в другом списке. Полученный список является пересечением двух списков. Вот Java-пример вызова метода List retainAll():
- Первые два списка созданы.
- 3 элемента добавляются в list, а 3 элемента в otherList.
- Метод retainAll() вызывается, передавая otherList в качестве параметра. После того, как list.retainAll(otherList) завершит выполнение, список будет содержать только те элементы, которые присутствовали как в list, так и otherList до вызова retainAll(). Более конкретно, это element1 и element3.
Размер
Вы можете получить количество элементов, вызвав метод size():
Подсписок
Интерфейс List имеет метод subList(), который может создавать новый List с подмножеством элементов из исходного List.
Метод subList() принимает 2 параметра:
- Начальный индекс — это индекс первого элемента из исходного списка для включения в подсписок.
- Конечный индекс является последним индексом подсписка, но элемент в последнем индексе не включается в подсписок.
Это похоже на то, как работает метод подстроки Java String. Вот пример:
После выполнения инструкции list.subList(1,3) подсписок будет содержать элементы с индексами 1 и 2. Помните, что исходный список содержит 4 элемента с индексами от 0 до 3. Вызов list.subList(1,3) будет включить индекс 1, но исключить индекс 3, тем самым сохраняя элементы с индексами 1 и 2.
Как преобразовать в набор
Вы можете преобразовать в набор, создав новый набор и добавив в него все элементы из списка. При этом удалятся все дубликаты. Таким образом, результирующий набор будет содержать все элементы списка, но только один раз. Вот пример:
Обратите внимание, что список содержит элемент String 3 два раза. Набор будет содержать эту строку только один раз. Таким образом, результирующий набор будет содержать элемент Strings 1, элемент 2 и элемент 3.
Как преобразовать в массив
Вы можете выполнить это с помощью метода List toArray():
Также возможно преобразовать в массив определенного типа:
Обратите внимание, что даже если мы передадим массив String размером 0 в toArray(), в возвращенном массиве будут все элементы списка. Он будет иметь то же количество элементов, что и список.
Как конвертировать массив в список
Это метод Arrays.asList(), который преобразует массив в список.
Общие
По умолчанию вы можете поместить любой объект в список, но из Java 5 Generics позволяет ограничить типы объектов, которые вы можете вставить. Вот пример:
Этот список теперь может содержать только экземпляры MyObject. Затем вы можете получить доступ к элементам и выполнить итерацию без их приведения:
Как сортировать
Вы можете отсортировать с помощью метода Collections sort().
Сортировка сопоставимых объектов
Если список содержит объекты, которые реализуют интерфейс Comparable(java.lang.Comparable), то эти объекты могут сравнивать себя друг с другом. В этом случае вы можете отсортировать следующим образом:
Класс Java String реализует интерфейс Comparable, вы можете сортировать их в естественном порядке, используя метод Collections sort().
Сортировка с помощью компаратора
Если объекты в списке не реализуют интерфейс Comparable или если вы хотите отсортировать объекты в другом порядке, чем их реализация compare(), вам необходимо использовать реализацию Comparator(java.util.Comparator). Вот пример сортировки списка объектов Car с использованием Comparator.
Первый класс автомобилей:
Вот код, который сортирует список вышеуказанных объектов Car:
Обратите внимание на реализацию Comparator в приведенном выше примере. Сравнивается только поле бренда объектов Car. Можно создать другую реализацию, которая сравнивает номерные знаки или даже количество дверей в автомобилях.
Также обратите внимание, что возможно реализовать Comparator, используя Lambda. Вот пример, который сортирует объекты List of Car с использованием трех различных лямбда-реализаций интерфейса Comparator, каждая из которых сравнивает экземпляры Car по своему полю:
Итерация
Вы можете выполнить итерацию несколькими способами. Три наиболее распространенных:
- Использование итератора.
- Использование цикла for-each.
- Использование цикла for.
- Использование API Java Stream.
Я объясню каждый из этих методов итерации списка Java в следующих разделах.
Итерация с использованием итератора
Вы получаете Iterator, вызывая метод iterator() интерфейса List.
Получив Iterator, вы можете продолжать вызывать его метод hasNext(), пока он не вернет false. Вызов hasNext() выполняется внутри цикла while.
Внутри цикла while вы вызываете метод Iterator next() интерфейса Iterator для получения следующего элемента, на который указывает Iterator.
Если список напечатан с использованием Java Generics, вы можете сохранить некоторые объекты внутри цикла while. Вот пример:
Итерация с использованием цикла For-Each
Второй способ — использовать цикл for, добавленный в Java 5 (также называемый циклом «для каждого»):
Цикл for выполняется один раз для каждого элемента списка. Внутри него каждый элемент, в свою очередь, связан с переменной obj.
Если список напечатан (List), вы можете изменить тип переменной внутри цикла:
Обратите внимание, список набирается как String. Поэтому вы можете установить тип переменной внутри цикла для String.
Итерация с помощью цикла For
Цикл for создает переменную int и инициализирует ее равной 0. Затем он зацикливается до тех пор, пока int i меньше размера списка. Для каждой итерации переменная увеличивается.
Внутри цикла for пример обращается к элементам List с помощью метода get(), передавая переменную i в качестве параметра.
Опять же, если список набирается с использованием Java Generics, например, для String, то вы можете использовать универсальный тип List в качестве типа для локальной переменной, которая назначается каждому элементу List в ходе итерации:
Обратите внимание, что тип локальной переменной внутри цикла for теперь String. Поскольку список обычно типизируется как String, он может содержать только объекты String. Следовательно, компилятор знает, что только метод String может быть возвращен из метода get(). Поэтому вам не нужно приводить элемент, возвращенный get(), в String.
С использованием API Java Stream
Для итерации вы должны сначала получить поток из списка. Это выполняется путем вызова метода List stream(). Вот пример получения потока из списка:
Последняя строка этого примера вызывает метод List stream() для получения потока, представляющего элементы списка.
Как только вы получили поток, можете выполнить итерацию потока, вызвав его метод forEach():
Вызов метода forEach() заставит Stream выполнить внутреннюю итерацию всех элементов потока и вызвать получателя, переданного в качестве параметра методу forEach() для каждого элемента в потоке.
Изучаем Java
Обучающие курсы:
Списки в Java
Списки
Рассмотрим работу со списками. Есть два вида списков: обычный (List из пакета java. awt в секции AWT и JList из пакета javax. swing в секции Swing) и раскрывающийся (Choice из пакета java. awt в секции AWT и JComboBox из пакета javax. swing в секции Swing).
Обычные списки предоставляют пользователю множественный выбор. Раскрывающийся список из Swing-компонентов может предоставить пользователю ввод иного значения (если значение свойства Editable равно true). Разберем работу со списками из пакета javax. swing на примере.
1. Создайте приложение с именем проекта Text field и заголовком «Шрифты текста».
2. Измените компоновку на XYLayout.
3. Добавьте компонент JEditorPane, изменив значение свойства Text на «».
4. Добавьте четыре компонента JLabel со значениями свойства Text: «Шрифт», «Размер», «Стиль» и «Цвет».
5. Добавьте три компонента JComboBox: первый будет предназначен для выбора шрифта, второй — для выбора размера (можно установить для свойства Editable значение true, если вы будете уверены, что пользователь созданной вами программы введет целое число), третий — для выбора стиля.
6. Добавьте компонент JList, с помощью которого пользователь будет выбирать цвет.
7. Добавьте после объявления компонентов следующий код.
private String fontName = «Arial»;
private int size = 14, style = 0;
private Font textFont = new Font(fontName, style, size);
8. Добавьте в конец конструктора код, представленный в листинге 8.10. Он предназначен для задания элементов выбора в раскрывающихся списках (с помощью метода addItem (Object)) и устанавливает начальный элемент (с помощью метода setSelecteditem (Object)). Также он задает элементы обычного списка, которые описываются в виде массива объектов String. В данном коде также создается экземпляр класса Color. В параметрах, которые приводятся при создании этого объекта, указывается красный, зеленый и синий оттенки (в значениях от 0 до 255).
9. Создайте для раскрывающихся списков обработчики события actionPerformed и реализуйте их так, как показано в листинге 8.1 Они будут выполняться при изменении выбранного элемента списка.
Листинг 8.11.
Обработчики событий списков
10. Теперь создайте для обычного списка обработчик события valueChanged, который будет вызываться при изменении выбранного элемента, и реализуйте его так, как показано в листинге 8.12.
При работе этой программы, какой элемент массива мы выберем, таким и будет цвет текста. Одно из возможных состояний нашего редактора показано на рис. 8.12.
Рис. 8.12. Результат выполнения листинга 8.12
Резюме
1. Существуют два типа графических компонентов: из пакета javax. swing и из пакета java. awt.
2. Мы рассмотрели работу с кнопками, флажками, переключателями, меню, текстовыми компонентами, ползунком, индикатором и списками.
Вопросы
1. Какие библиотеки графических компонентов имеются в JBuilder?
2. Какие компоненты для работы с кнопками представлены в JBuilder?
3. Какие компоненты для работы с текстом имеются в редакторе?
4. Для чего нужен компонент JSlider?
5. Для чего нужен компонент Choice?
Контрольные упражнения
1. Напишите программу для посетителя магазина канцтоваров, с помощью которой покупатель мог бы, выбрав нужные ему товары, узнать общую стоимость покупки.
2. Напишите программу, которая бы содержала текстовое поле и с помощью раскрывающегося списка выбирала бы цвет для текста и курсора.
Сергей Владимирцев
07.03.2011
Список интерфейса в Java с примерами
Java.util.List является дочерним интерфейсом Collection . Это упорядоченная коллекция объектов, в которой могут храниться повторяющиеся значения. Поскольку List сохраняет порядок вставки, он позволяет позиционный доступ и вставку элементов. Интерфейс списка реализуется классами ArrayList , LinkedList , Vector и Stack .
Декларация:
Создание объектов списка:
List — это интерфейс, и экземпляры List могут быть созданы путем реализации различных классов следующими способами:
Общий список объектов:
После введения Generics в Java 1.5 стало возможным ограничить тип объекта, который может храниться в списке. Типобезопасный список может быть определен следующим образом:
Операции над списком:
List Interface расширяет коллекцию, следовательно, он поддерживает все операции интерфейса коллекции, а также следующие дополнительные операции:
- Позиционный доступ:
Список позволяет добавлять, удалять, получать и устанавливать операции на основе числовых позиций элементов в Списке. Список предоставляет следующие методы для этих операций:- void add (int index, Object O): Этот метод добавляет данный элемент по указанному индексу.
- boolean addAll (int index, Collection c): этот метод добавляет все элементы из указанной коллекции в список. Первый элемент вставляется по указанному индексу. Если в этой позиции уже есть элемент, этот элемент и другие последующие элементы (если они есть) сдвигаются вправо путем увеличения их индекса.
- Object remove (int index): этот метод удаляет элемент из указанного индекса. Он сдвигает последующие элементы (если они есть) влево и уменьшает их индексы на 1.
- Object get (int index): этот метод возвращает элемент по указанному индексу.
- Object set (int index, Object new): Этот метод заменяет элемент по указанному индексу новым элементом. Эта функция возвращает элемент, который был только что заменен новым элементом.
// Java-программа для демонстрации позиционного доступа
// операции с интерфейсом List
public class ListDemo <
public static void main(String[] args)
List l1 = new ArrayList ();
l1.add( 0 , 1 ); // добавляет 1 при 0 индексе
l1.add( 1 , 2 ); // добавляет 2 на 1 индекс
System.out.println(l1); // [1, 2]
// Создание другого списка
List l2 = new ArrayList ();
// Добавим список l2 из 1 индекса
// удаляет элемент из индекса 1
System.out.println(l1); // [1, 2, 3, 2]
// Печатает элемент по индексу 3
// Заменим 0-й элемент на 5
List предоставляет методы для поиска элемента и возвращает его числовую позицию. Для этой операции List поддерживает два следующих метода:
- int indexOf (Object o): этот метод возвращает первое вхождение данного элемента или -1, если элемент отсутствует в списке.
- int lastIndexOf (Object o): этот метод возвращает последнее вхождение данного элемента или -1, если элемент отсутствует в списке.
// Java-программа для демонстрации поиска
// операции с интерфейсом List
public class ListDemo <
public static void main(String[] args)
// Тип списка безопасных массивов, хранит только строку
List l = new ArrayList ( 5 );
// Использование indexOf () и lastIndexOf ()
System.out.println( «first index of Geeks:»
System.out.println( «last index of Geeks:»
System.out.println( «Index of element»
- ListIterator (расширяет Iterator) используется для итерации по элементу List. Список итераторов является двунаправленным итератором. Для более подробной информации о ListIterator обратитесь к Итераторам в Java .
Интерфейс List предоставляет метод для получения представления List части данного List между двумя индексами. Ниже приведен метод, поддерживаемый списком для операции просмотра диапазона.
- List subList (int fromIndex, int toIndex): Этот метод возвращает представление списка указанного списка между fromIndex (включительно) и toIndex (эксклюзивом).
// Java-программа для демонстрации операции со списком
// в интерфейсе списка.
public class ListDemo <
public static void main(String[] args)
// Тип списка безопасных массивов, хранит только строку
Работа со списком в Java
Дата добавления: 2015-06-12 ; просмотров: 3032 ; Нарушение авторских прав
При создании таких игр как «Змейка» или «Морской бой» было удобно использовать двумерный массив для хранения данных игрового поля. Но использование только массивов будет не очень удобным при создании игры «Пасьянс-Косынка». В играх «Змейка», «Морской бой» размеры игровых полей были фиксированного размера и не изменялись во время игры. Массив удобен для хранения, изменения и использования фиксированного набора значений. В игре «Пасьянс-Косынка» нам понадобится хранить наборы значений,количество которых можно увеличивать или уменьшать. В этом нам поможет список значений,который в языке Javaможно реализовать с помощью классаArrayList:
//Подключаем класс ArrayList
Рассмотрим примеры работы со списком на примере списка целых чисел.
Прежде всего, создадим пустой список значений целых чисел:
public class kosinka <
public static void main(String[] args) <
//Создаем пустой список значений целых чисел
ArrayList lst = new ArrayList ();
Внутри угловых скобок указывается тип элементов списка ,Integer –это целое число. Значения элементов списка могут быть любого типа. Создание, например,списка кнопок JButton выглядит так:
ArrayList lst = new ArrayList ();
Но сейчас мы будем рассматривать список целых чисел. Работа со списками разных типов значений происходит по одинаковой схеме.
Изначально список пустой:
ArrayList lst = new ArrayList ();
Добавим в него три новых элемента с помощью метода add():
// Создаем пустой список значений целых чисел
ArrayList lst = new ArrayList ();
//Добавим первый элемент в список
//Добавим второй элемент в список
//Добавим третий элемент в список
Добавление элементов происходит в конец списка (см. рис. 10).
Теперь рассмотрим основные приемы работы со списком:
// Получаем количество элементов в списке
// В данном случае – три (см. рис. 10)
int kol = lst.size();
// Получение значения элемента по номеру
// В данном случае – 100 (см. рис. 10)
int val = lst.get(0);
// Удаление элемента из списка по номеру
// В данном случае – самый верхний (см. рис. 10)
// Удаление всех элементов из списка
С помощью метода size()можно определить количество элементов в списке.
Метод get()позволяет получить значение любого элемента по номеру, нумерация начинается с нуля. Метод remove()удаляет элемент из списка по его номеру, нумерация начинается с нуля.После удаления элемента список автоматически сжимается. Метод clear() позволяет удалить сразу все элементы из списка. Также как и в массиве, каждый элемент списка имеет свой номер. Самый первый элемент списка имеет номер нуль 0, а самый последний элемент имеет номер size()-1. Этих методов работы со списком будет достаточно при создании игры «Пасьянс-Косынка». На игровом поле будут находиться карты,разложенные в несколько стопок.Пользователь будет переносить карты из одной стопки в другую. Карты будут добавляться в конец стопки карт. Поэтому всех перечисленных выше методов будет достаточно.