Android java util list

Содержание
  1. Android java util list
  2. Android java util list
  3. Method Summary
  4. Method Detail
  5. isEmpty
  6. contains
  7. iterator
  8. toArray
  9. toArray
  10. remove
  11. containsAll
  12. addAll
  13. addAll
  14. removeAll
  15. retainAll
  16. clear
  17. equals
  18. hashCode
  19. remove
  20. indexOf
  21. lastIndexOf
  22. listIterator
  23. listIterator
  24. subList
  25. Интерфейс Java List Collection с примерами
  26. List против Set
  27. Реализации
  28. Как вставить элементы
  29. Как вставить нулевые значения
  30. Как вставить элементы по определенному индексу
  31. Как вставить все элементы из одного списка в другой
  32. Как получить элементы
  33. Как найти элементы
  34. Как найти последнее вхождение элемента в списке
  35. Проверка, содержится ли элемент
  36. Как удалить элементы
  37. Как удалить все элементы
  38. Как сохранить все элементы из одного списка в другом
  39. Размер
  40. Подсписок
  41. Как преобразовать в набор
  42. Как преобразовать в массив
  43. Как конвертировать массив в список
  44. Общие
  45. Как сортировать
  46. Сортировка сопоставимых объектов
  47. Сортировка с помощью компаратора
  48. Итерация
  49. Итерация с использованием итератора
  50. Итерация с использованием цикла For-Each
  51. Итерация с помощью цикла For
  52. С использованием API Java Stream

Android java util list

Unlike sets, lists typically allow duplicate elements. More formally, lists typically allow pairs of elements e1 and e2 such that e1.equals(e2), and they typically allow multiple null elements if they allow null elements at all. It is not inconceivable that someone might wish to implement a list that prohibits duplicates, by throwing runtime exceptions when the user attempts to insert them, but we expect this usage to be rare.

The List interface places additional stipulations, beyond those specified in the Collection interface, on the contracts of the iterator, add, remove, equals, and hashCode methods. Declarations for other inherited methods are also included here for convenience.

The List interface provides four methods for positional (indexed) access to list elements. Lists (like Java arrays) are zero based. Note that these operations may execute in time proportional to the index value for some implementations (the LinkedList class, for example). Thus, iterating over the elements in a list is typically preferable to indexing through it if the caller does not know the implementation.

The List interface provides a special iterator, called a ListIterator, that allows element insertion and replacement, and bidirectional access in addition to the normal operations that the Iterator interface provides. A method is provided to obtain a list iterator that starts at a specified position in the list.

The List interface provides two methods to search for a specified object. From a performance standpoint, these methods should be used with caution. In many implementations they will perform costly linear searches.

The List interface provides two methods to efficiently insert and remove multiple elements at an arbitrary point in the list.

Note: While it is permissible for lists to contain themselves as elements, extreme caution is advised: the equals and hashCode methods are no longer well defined on such a list.

Some list implementations have restrictions on the elements that they may contain. For example, some implementations prohibit null elements, and some have restrictions on the types of their elements. Attempting to add an ineligible element throws an unchecked exception, typically NullPointerException or ClassCastException. Attempting to query the presence of an ineligible element may throw an exception, or it may simply return false; some implementations will exhibit the former behavior and some will exhibit the latter. More generally, attempting an operation on an ineligible element whose completion would not result in the insertion of an ineligible element into the list may throw an exception or it may succeed, at the option of the implementation. Such exceptions are marked as «optional» in the specification for this interface.

This interface is a member of the Java Collections Framework.

Источник

Android java util list

Unlike sets, lists typically allow duplicate elements. More formally, lists typically allow pairs of elements e1 and e2 such that e1.equals(e2), and they typically allow multiple null elements if they allow null elements at all. It is not inconceivable that someone might wish to implement a list that prohibits duplicates, by throwing runtime exceptions when the user attempts to insert them, but we expect this usage to be rare.

The List interface places additional stipulations, beyond those specified in the Collection interface, on the contracts of the iterator, add, remove, equals, and hashCode methods. Declarations for other inherited methods are also included here for convenience.

The List interface provides four methods for positional (indexed) access to list elements. Lists (like Java arrays) are zero based. Note that these operations may execute in time proportional to the index value for some implementations (the LinkedList class, for example). Thus, iterating over the elements in a list is typically preferable to indexing through it if the caller does not know the implementation.

The List interface provides a special iterator, called a ListIterator, that allows element insertion and replacement, and bidirectional access in addition to the normal operations that the Iterator interface provides. A method is provided to obtain a list iterator that starts at a specified position in the list.

The List interface provides two methods to search for a specified object. From a performance standpoint, these methods should be used with caution. In many implementations they will perform costly linear searches.

Читайте также:  Андроид реклама ads by

The List interface provides two methods to efficiently insert and remove multiple elements at an arbitrary point in the list.

Note: While it is permissible for lists to contain themselves as elements, extreme caution is advised: the equals and hashCode methods are no longer well defined on such a list.

Some list implementations have restrictions on the elements that they may contain. For example, some implementations prohibit null elements, and some have restrictions on the types of their elements. Attempting to add an ineligible element throws an unchecked exception, typically NullPointerException or ClassCastException. Attempting to query the presence of an ineligible element may throw an exception, or it may simply return false; some implementations will exhibit the former behavior and some will exhibit the latter. More generally, attempting an operation on an ineligible element whose completion would not result in the insertion of an ineligible element into the list may throw an exception or it may succeed, at the option of the implementation. Such exceptions are marked as «optional» in the specification for this interface.

This interface is a member of the Java Collections Framework.

Method Summary

Methods
Modifier and Type Method and Description
boolean add(E e)
void add(int index, E element) boolean addAll(int index, Collection c) E set(int index, E element) List subList(int fromIndex, int toIndex)

Method Detail

isEmpty

contains

iterator

toArray

The returned array will be «safe» in that no references to it are maintained by this list. (In other words, this method must allocate a new array even if this list is backed by an array). The caller is thus free to modify the returned array.

This method acts as bridge between array-based and collection-based APIs.

toArray

If the list fits in the specified array with room to spare (i.e., the array has more elements than the list), the element in the array immediately following the end of the list is set to null. (This is useful in determining the length of the list only if the caller knows that the list does not contain any null elements.)

Like the toArray() method, this method acts as bridge between array-based and collection-based APIs. Further, this method allows precise control over the runtime type of the output array, and may, under certain circumstances, be used to save allocation costs.

Suppose x is a list known to contain only strings. The following code can be used to dump the list into a newly allocated array of String: Note that toArray(new Object[0]) is identical in function to toArray().

Lists that support this operation may place limitations on what elements may be added to this list. In particular, some lists will refuse to add null elements, and others will impose restrictions on the type of elements that may be added. List classes should clearly specify in their documentation any restrictions on what elements may be added.

remove

containsAll

addAll

addAll

removeAll

retainAll

clear

equals

hashCode

remove

indexOf

lastIndexOf

listIterator

listIterator

subList

This method eliminates the need for explicit range operations (of the sort that commonly exist for arrays). Any operation that expects a list can be used as a range operation by passing a subList view instead of a whole list. For example, the following idiom removes a range of elements from a list: Similar idioms may be constructed for indexOf and lastIndexOf, and all of the algorithms in the Collections class can be applied to a subList.

The semantics of the list returned by this method become undefined if the backing list (i.e., this list) is structurally modified in any way other than via the returned list. (Structural modifications are those that change the size of this list, or otherwise perturb it in such a fashion that iterations in progress may yield incorrect results.)

  • Summary:
  • Nested |
  • Field |
  • Constr |
  • Method
  • Detail:
  • Field |
  • Constr |
  • Method

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.

Источник

Интерфейс Java List Collection с примерами

Интерфейс Java List, java.util.List, представляет упорядоченную последовательность объектов. Элементы, содержащиеся в списке Java, могут быть вставлены, повторены и удалены в соответствии с порядком их появления в нем. Порядок элементов – вот почему эта структура данных называется списком.

Каждый элемент имеет индекс: первый элемент – 0, второй – 1 и т. д. Индекс означает «сколько элементов находится в начале». Таким образом, первый элемент находится на расстоянии 0 элементов от начала списка, потому что он находится в начале.

Вы можете добавить любой объект в список. Если он не типизирован с использованием Java Generics, то вы можете даже смешивать объекты разных типов (классов) в одном и том же списке. Однако на практике это происходит не часто.

Интерфейс List является стандартным интерфейсом и подтипом интерфейса Collection, что означает, что List наследуется от Collection.

List против Set

Интерфейсы List и Set очень похожи в том, что они оба представляют коллекцию элементов. Тем не менее, есть некоторые существенные различия, отраженные в методах, предлагаемых интерфейсами:

  1. Один и тот же элемент может встречаться в списке более одного раза. Это отличается от набора, где каждый элемент может встречаться только один раз.
  2. Элементы в List имеют порядок, и могут повторяться в этом порядке. Набор не дает никаких обещаний относительно порядка элементов, хранящихся внутри.

Реализации

Будучи подтипом Collection, все методы в интерфейсе Collection также доступны в интерфейсе List.

Поскольку List – это интерфейс, вам нужно создать конкретную реализацию интерфейса, чтобы использовать его, либо выбрать между следующими в API коллекций:

Также есть параллельные реализации в пакете 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 параметра:

  1. Начальный индекс – это индекс первого элемента из исходного списка для включения в подсписок.
  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() для каждого элемента в потоке.

Источник

Читайте также:  Teamviewer для андроид планшет
Оцените статью