Автор оригинала: Pankaj Kumar.
Список Java – это упорядоченная коллекция. Список Java – это интерфейс, который расширяет интерфейс коллекции. Список Java обеспечивает контроль над позицией, в которую вы можете вставить элемент. Вы можете получить доступ к элементам по их индексу, а также к элементам поиска в списке.
Список Java
Некоторые из важных моментов в списке Java следующие;
- Интерфейс списка Java является членом платформы коллекций Java.
- Список позволяет добавлять повторяющиеся элементы.
- Список позволяет иметь “нулевые” элементы.
- Интерфейс списка содержит множество методов по умолчанию в Java 8, например, заменить все, сортировать и разделитель.
- Индексы списков начинаются с 0, как и массивы.
- Список поддерживает дженерики, и мы должны использовать его, когда это возможно. Использование обобщений со списком позволит избежать исключения ClassCastException во время выполнения.
Диаграмма классов списка Java
Интерфейс списка Java расширяет интерфейс коллекции. Интерфейс сбора расширяет итерационный интерфейс. Некоторые из наиболее часто используемых классов реализации списков-это ArrayList, LinkedList, Вектор, стек, CopyOnWriteArrayList. Абстрактный список предоставляет базовую реализацию интерфейса списка, чтобы уменьшить усилия по реализации списка.
Методы списка Java
Некоторые из полезных методов списка Java являются;
- int size() : чтобы получить количество элементов в списке.
- логическое значение isEmpty() : для проверки, пуст список или нет.
- логическое значение содержит(объект o) : Возвращает значение true, если этот список содержит указанный элемент.
- Итератор итератор() : Возвращает итератор по элементам в этом списке в правильной последовательности.
- Объект[] toArray() : Возвращает массив, содержащий все элементы в этом списке в правильной последовательности
- логическое добавление(E e) : Добавляет указанный элемент в конец этого списка.
- логическое удаление(Объект o) : Удаляет первое вхождение указанного элемента из этого списка.
- логическое значение retainAll(Коллекция c) : Сохраняет только элементы в этом списке, содержащиеся в указанной коллекции.
- void clear() : Удаляет все элементы из списка.
- E get(индекс int) : Возвращает элемент в указанной позиции в списке.
- Набор E(индекс int, элемент E) : Заменяет элемент в указанной позиции в списке указанным элементом.
- ListIterator ListIterator() : Возвращает итератор списка по элементам в списке.
- Список Подсписка(int fromIndex, int toIndex) : Возвращает представление части этого списка между указанным fromIndex, включительно, и toIndex, эксклюзивно. Возвращенный список подкрепляется этим списком, поэтому неструктурные изменения в возвращенном списке отражаются в этом списке, и наоборот.
Некоторые из методов по умолчанию, добавленных в список в Java 8, являются;
- по умолчанию пустая замена(оператор UnaryOperator) : Заменяет каждый элемент этого списка результатом применения оператора к этому элементу.
- сортировка пустоты по умолчанию(Компаратор E> c) : Сортирует этот список в соответствии с порядком, заданным указанным компаратором. E> c)
- : Сортирует этот список в соответствии с порядком, заданным указанным компаратором. Разделитель по умолчанию разделитель()
Массив Java для перечисления
Мы можем использовать класс Arrays, чтобы получить представление массива в виде списка. Однако мы не сможем внести какие-либо структурные изменения в список, это вызовет java.lang.Исключение UnsupportedOperationException. Поэтому лучший способ-использовать цикл for для создания списка путем итерации по массиву. Ниже приведен простой пример, показывающий, как правильно преобразовать массив java в список.
package com.journaldev.examples; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ArrayToList { public static void main(String[] args) { String[] vowels = {"a","e","i","o","u"}; ListvowelsList = Arrays.asList(vowels); System.out.println(vowelsList); /** * List is backed by array, we can't do structural modification * Both of the below statements will throw java.lang.UnsupportedOperationException */ //vowelsList.remove("e"); //vowelsList.clear(); //using for loop to copy elements from array to list, safe for modification of list List myList = new ArrayList<>(); for(String s : vowels){ myList.add(s); } System.out.println(myList); myList.clear(); } }
Выберите любой из вышеперечисленных методов, исходя из требований вашего проекта.
Список Java в массив
Простой пример, показывающий правильный способ преобразования списка в массив.
package com.journaldev.examples; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ListToArray { public static void main(String[] args) { Listletters = new ArrayList (); // add example letters.add("A"); letters.add("B"); letters.add("C"); //convert list to array String[] strArray = new String[letters.size()]; strArray = letters.toArray(strArray); System.out.println(Arrays.toString(strArray)); //will print "[A, B, C]" } }
Сортировка списка Java
Существует два способа сортировки списка. Мы можем использовать класс Collections для естественной сортировки или использовать метод сортировки по списку() и использовать наш собственный компаратор для сортировки. Ниже приведен простой пример сортировки списков java.
package com.journaldev.examples; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class ListSortExample { public static void main(String[] args) { Listints = new ArrayList<>(); Random random = new Random(); for (int i = 0; i < 10; i++) ints.add(random.nextInt(1000)); //natural sorting using Collections class Collections.sort(ints); System.out.println("Natural Sorting: "+ints); //My custom sorting, reverse order ints.sort((o1,o2) -> {return (o2-o1);}); System.out.println("Reverse Sorting: "+ints); } }
Пример выходных данных приведен ниже. Поскольку я использую Random для генерации элементов списка, каждый раз он будет отличаться.
Natural Sorting: [119, 273, 388, 450, 519, 672, 687, 801, 812, 939] Reverse Sorting: [939, 812, 801, 687, 672, 519, 450, 388, 273, 119]
Java Перечисляет Общие Операции
Наиболее распространенными операциями, выполняемыми в списке java, являются добавление, удаление, установка, очистка, размер и т.д. Ниже приведен простой пример списка java, показывающий использование распространенных методов.
package com.journaldev.examples; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ListExample { public static void main(String args[]) { Listvowels= new ArrayList (); //add example vowels.add("A"); vowels.add("I"); //let's insert E between A and I vowels.add(1,"E"); System.out.println(vowels); List list = new ArrayList (); list.add("O");list.add("U"); //appending list elements to letters vowels.addAll(list); System.out.println(vowels); //clear example to empty the list list.clear(); //size example System.out.println("letters list size = "+vowels.size()); //set example vowels.set(2, "E"); System.out.println(vowels); //subList example vowels.clear();vowels.add("E"); vowels.add("E");vowels.add("I"); vowels.add("O"); list = vowels.subList(0, 2); System.out.println("letters = "+vowels+", list = "+list); vowels.set(0, "A"); System.out.println("letters = "+vowels+", list = "+list); list.add("U"); System.out.println("letters = "+vowels+", list = "+list); } }
Вывод приведенного выше примера программы java-списка является;
[A, E, I] [A, E, I, O, U] letters list size = 5 [A, E, E, O, U] letters = [E, E, I, O], list = [E, E] letters = [A, E, I, O], list = [A, E] letters = [A, E, U, I, O], list = [A, E, U]
Итератор списка Java
Ниже приведен простой пример, показывающий, как перебирать список в java.
package com.journaldev.examples; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class ListIteratorExample { public static void main(String[] args) { Listlist = new ArrayList<>(); for(int i=0; i<5; i++) list.add(i); Iterator iterator = list.iterator(); //simple iteration while(iterator.hasNext()){ int i = (int) iterator.next(); System.out.print(i + ", "); } System.out.println("\n"+list); //modification of list using iterator iterator = list.iterator(); while(iterator.hasNext()){ int x = (int) iterator.next(); if(x%2 ==0) iterator.remove(); } System.out.println(list); //changing list structure while iterating iterator = list.iterator(); while(iterator.hasNext()){ int x = (int) iterator.next(); //ConcurrentModificationException here if(x==1) list.add(10); } } }
Вывод вышеупомянутой программы итератора списков java является;
0, 1, 2, 3, 4, [0, 1, 2, 3, 4] [1, 3] Exception in thread "main" java.util.ConcurrentModificationException at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901) at java.util.ArrayList$Itr.next(ArrayList.java:851) at com.journaldev.examples.ListIteratorExample.main(ListIteratorExample.java:34)
Это все краткое описание списка на Java. Я надеюсь, что эти примеры списков Java помогут вам начать работу с программированием сбора списков.