- Списочный массив ArrayList
- Добавление элемента в массив ArrayList, метод add
- Замена элемента массива ArrayList, метод set
- Удаление элемента массива ArrayList, метод remove
- Определение позиции элемента ArrayList, метод indexOf
- Проверка наличие элемента в ArrayList, метод contains
- Создание массива из элементов ArrayList, метод toArray
- Интерфейс List
- Преобразование массива в список, Arrays
- Arraylist string methods java
- Добавление элементов
- Удаление элементов
- Вспомогательные методы
- Материалы по теме
Списочный массив ArrayList
В Java массивы имеют фиксированную длину и не могут быть увеличены или уменьшены. Класс ArrayList реализует интерфейс List и может менять свой размер во время исполнения программы, при этом не обязательно указывать размерность при создании объекта. Элементы ArrayList могут быть абсолютно любых типов в том числе и null.
Пример создания объекта ArrayList
ArrayList list = new ArrayList ();
Можно инициализировать массив на этапе определения. Созданный объект list содержит свойство size. Обращение к элементам массива осуществляется с помощью метода get(). Пример :
ArrayList list; list = Arrays.asList(new String[] ); System.out.println ("Размер массива равен '" + Integer.valueOf (list.size()) + "' элементам");
Добавление элемента в массив ArrayList, метод add
Работать с ArrayList просто: необходимо создать объект и вставлять созданные объекты методом add(). Обращение к элементам массива осуществляется с помощью метода get(). Пример:
ArrayList list; list = new ArrayListЗамена элемента массива ArrayList, метод set
Чтобы заменить элемент в массиве, нужно использовать метод set() с указанием индекса и новым значением.
list.add("Яблоко"); list.add("Груша"); list.add("Слива"); list.set(1, "Персик"); System.out.println ( "2-ой элемент массива '" + list.get(1) + "'");Удаление элемента массива ArrayList, метод remove
Для удаления элемента из массива используется метод remove(). Можно удалять по индексу или по объекту:
list.remove(0); // удаляем по индексу list.remove("Слива"); // удаляем по объектуПРИМЕЧАНИЕ: элементы, следующие после удалённого элемента, перемещаются на одну позицию ближе к началу. То же самое относится и к операции вставки элемента в середину списка.
Для очистки всего массива используется метод clear():
Определение позиции элемента ArrayList, метод indexOf
В списочном массиве ArrayList существует метод indexOf(), который ищет нужный элемент и возвращает его индекс.
int index = list.indexOf("Слива"); // выводим имя элемента и его номер в массиве System.out.println (list.get(index) + " числится под номером " + index);Отсчёт в массиве начинается с 0, если индекс равен 2, значит он является третьим в массиве.
Проверка наличие элемента в ArrayList, метод contains
Чтобы узнать, есть в массиве какой-либо элемент, можно воспользоваться методом contains(), который вернёт логическое значение true или false в зависимости от присутствия элемента в наборе :
System.out.println (list.contains("Картошка") + "");Понятно, что в массиве никаких овощей быть не может, поэтому в консоле будет отображено false.
Создание массива из элементов ArrayList, метод toArray
Для конвертирования набора элементов в обычный массив необходимо использовать метод toArray().
ArrayList myArrayList = new ArrayList(); myArrayList.add("Россия"); myArrayList.add("Польша"); myArrayList.add("Греция"); myArrayList.add("Чехия"); String[] array = <>; // конвертируем ArrayList в массив array = myArrayList.toArray(new String[myArrayList.size()]);Интерфейс List
java.util.List является интерфейсом и его следует использовать вместо ArrayList следующим образом :
Или укороченный вариант для Java 7:
В примере тип ArrayList заменен на List, но в объявлении оставлен new ArrayList(). Всё остальное остаётся без изменений. Это является рекомендуемым способом.
Интерфейс List реализует более общий интерфейс коллекции Collection.
Преобразование массива в список, Arrays
Для создания массива можно не только добавлять по одному объекту через метод add(), но и сразу массив с использованием Arrays.asList(. ).
Пример создания и инициализации массива из объектов Integer.
List numlist = Arrays.asList(1, 2, 5, 9, 11); System.out.println (numlist.get(2) + ""); // выводит число 5У данного способа есть недостаток. Если вы определили списочный массив таким образом, то уже не можете вставлять или удалять элемент, хотя при этом можете изменять существующий элемент.
List numlist = Arrays.asList(1, 2, 5, 9, 11); numlist.set(2, 33); // так можно numlist.add(34); // нельзя, ошибка во время исполнения System.out.println (numlist.get(2) + "");Arraylist string methods java
2. ArrayList(int initialCapacity) – объявление списка с указанием размера преимущественно для случаев, когда будет использоваться большое количество данных и в целях оптимизации следует задавать уже большой размер. Например, используется в случаях, когда список увеличивается с каждым вызовом метода в классе. Размер списка растет с нелинейной скоростью и, если заранее известно, что список будет увеличиваться и будет достигать больших размеров (больше 1e3 элементов), оптимально будет задать изначальный размер и резервировать количество мест заранее.
ArrayList employee = new ArrayList<>(100);
3. ArrayList(Collection c) – объявления списка с уже имеющимся списком, элементы которого были переданы конструктору.
ArrayList cars = new ArrayList<>(Arrays.asList("BMW", "AUDI"));
🧩☕ Интересные задачи по Java для практики можно найти на нашем телеграм-канале «Библиотека задач по Java»
Добавление элементов
Для того чтобы добавить элемент в список, используется простая функция add . Для этого метода есть разновидности:
1. add(E e) – добавление элемента в конец списка. Это функция является возвращаемой. Если элемент был добавлен в список, то ответ – true , иначе – false .
ArrayList fruits = new ArrayList<>(); // ArrayList() создание списка fruits.add("banana"); // добавление элемента fruits.add("apple"); // добавление элемента for (var fruit: fruits) < System.out.println(fruit); // вывод элементов >//output: // banana // apple
2. add(int index, E element) – в данном методе добавление элемента происходит в определенную позицию (index), а все последующие элементы двигаются слева направо. Метод эффективен для небольших размеров списка (когда размер списка не более ~100 элементов). В ином случае – если в программе происходит много сдвигов, то лучше использовать LinkedList.
ArrayList fruits = new ArrayList(); fruits.add("apple"); fruits.add("banana"); fruits.add(1, "watermelon"); // добавляем элемент на 2-ую позицию. for (var fruit : fruits) < System.out.println(fruit); >/*output apple watermelon banana */
3. addAll(Collection ) – добавление списка элементов в конец добавляемого списка. То есть, при вызове данного метода в конец списка добавляются все элементы в таком же порядке.
//список фруктов ArrayList fruits = new ArrayList(); fruits.add("apple"); fruits.add("banana"); fruits.add(1, "watermelon"); //список овощей ArrayList vegetables = new ArrayList<>(); vegetables.add("cucumber"); vegetables.add("carrot"); //список покупок ArrayList groceries = new ArrayList<>(); //добавляем в список покупок овощи и фрукты groceries.addAll(vegetables); groceries.addAll(fruits); for (var item : groceries) < System.out.println(item); >/*output cucumber carrot apple watermelon banana */
4. addAll(int index, Collection ) – это смесь добавления списка и также добавления элемента в определенную позицию. В этом методе в позицию index производится добавление всех элементов из списка, а все последующие элементы смещаются направо.
//список фруктов ArrayList fruits = new ArrayList(); fruits.add("apple"); fruits.add("banana"); fruits.add(1, "watermelon"); //список овощей ArrayList vegetables = new ArrayList<>(); vegetables.add("cucumber"); vegetables.add("carrot"); //список покупок ArrayList groceries = new ArrayList<>(); //добавляем в список покупок овощи и фрукты groceries.addAll(vegetables); groceries.addAll(1, fruits); //добавляем список фруктов на 1-ую позицию списка продуктов //индекс 0, 1, 2, 3, 4 //было - cucumber, carror //стало - cucumber, apple, banana, watermelon, carrot for (var item : groceries) < System.out.println(item); >/*output cucumber apple watermelon banana carrot */
Удаление элементов
В ArrayList, существуют методы для удаления элементов. Всего существуют 3 метода для удаления элемента:
1. remove(int index) – удаление осуществляется, используя индекс определенного элемента. То есть, передается порядковый номер элемента и этот элемента удаляется из списка. Не забываем, что индекс начинается с 0.
//список фруктов ArrayList fruits = new ArrayList(); fruits.add("apple"); fruits.add("banana"); fruits.add("watermelon"); fruits.remove(0); // удаляем первый фрукт for (var fruit : fruits) < System.out.println(fruit); >/* output watermelon banana */
2. remove(object o) – метод удаляет первый встретившийся элемент, который равняется переданному объекту в параметрах. Если проще, то метод проходится по всему списку и ищет элемент, который равняется удаляемому объекту и при нахождении удаляет только первый встретившийся.
//список фруктов ArrayList fruits = new ArrayList(); fruits.add("apple"); fruits.add("banana"); fruits.add("watermelon"); fruits.remove("banana"); // удаляем фрукт банан for (var fruit : fruits) < System.out.println(fruit); >/* output apple watermelon */
3. removaAll(Collection c) – данный метод удаляет все элементы, находящиеся в передаваемом списке.
//список фруктов ArrayList fruits = new ArrayList(); fruits.add("apple"); fruits.add("banana"); fruits.add(1, "watermelon"); ArrayList fruitsToDelete = new ArrayList<>(); fruitsToDelete.add("apple"); fruitsToDelete.add("watermelon"); fruits.removeAll(fruitsToDelete); for (var fruit : fruits) < System.out.println(fruit); >/* output banana */
Вспомогательные методы
В Arraylist встречаются различные методы, которые являются вспомогательными при различных условиях:
1. size() – возвращает размер списка.
//список фруктов ArrayList fruits = new ArrayList(); fruits.add("apple"); fruits.add("banana"); fruits.add(1, "watermelon"); System.out.println(fruits.size()); /* output 3 */
2. sort(Comparator c) – происходит сортировка элементов по заданным параметрам Comparator . Есть уже значения по умолчанию у Comparator , которыми можно пользоваться, Comparator.naturalOrder() , а также Comparator.reverseOrder() .
ArrayList numbers = new ArrayList<>(); numbers.add(1); numbers.add(3); numbers.add(-1); numbers.add(5); //сортирует по возрастанию numbers.sort(Comparator.naturalOrder()); for (var number:numbers) < System.out.print(number + " "); >//переворачивает список в конца numbers.sort(Comparator.reverseOrder()); System.out.println(); for (var number:numbers)3. toArray() – данный метод превращает список в массив. Он возвращает массив объектов ( Object[] ), но можно вернуть желаемый тип данных и для этого потребуется в метод toArray(Array a) передать уже созданный массив.
ArrayList numbers = new ArrayList<>(); numbers.add(1); numbers.add(3); numbers.add(-1); numbers.add(5); var numbersArray = numbers.toArray(); for (var number:numbersArray) < System.out.print(number + " "); >System.out.println(); //определения типа Integer[], чтобы в тип данных var numbersArrayDefined = new Integer[numbers.size()]; numbers.toArray(numbersArrayDefined); for (var number: numbersArrayDefined) < System.out.print(number + " "); >//output /* 1 3 -1 5 1 3 -1 5 */
4. isEmpty() – проверка списка на наличие элементов. Если список пустой, то возвращает true , в противном случае – false .
ArrayList numbers = new ArrayList<>(); numbers.add(1); numbers.add(3); numbers.add(-1); numbers.add(5); System.out.println(numbers.isEmpty());//false ArrayList numbersEmpty = new ArrayList<>(); System.out.println(numbersEmpty.isEmpty()); //true
5. indexOf(Object o) – метод возвращает позицию передаваемого элемента, и, если элемент не был найден, возвращает -1.
ArrayList fruits = new ArrayList<>(); fruits.add("apple"); fruits.add("banana"); fruits.add("watermelon"); System.out.println(fruits.indexOf("apple")); // 0 System.out.println(fruits.indexOf("banana")); // 1 System.out.println(fruits.indexOf("watermelon")); // 2
6. clear() – удаляет все элементы из списка.
ArrayList fruits = new ArrayList<>(); fruits.add("apple"); fruits.add("banana"); fruits.add("watermelon"); fruits.clear(); // очищаем список System.out.println(fruits.isEmpty()); // true
7. clone() – метод копирует список. После копирования нужно привести к необходимому классу, то есть type casting . Когда список клонируется, создается отдельный независимый объект и удаление родительского списка не влияет на элементы нового списка.
ArrayList fruits = new ArrayList<>(); fruits.add("apple"); fruits.add("banana"); fruits.add("watermelon"); var fruitsNew = (ArrayList)fruits.clone(); fruits.clear(); // очищаем предыдущий список // для проверки что fruitsNew действительно новый список for (var fruit : fruitsNew) < System.out.println(fruit); >/* output * apple * banana * watermelon * */
Также можно прочитать более подробно про все существующие методы ArrayList в документации Oracle по ссылке.
Материалы по теме