Программирование

Как использовать Java ArrayList

Как использовать Java ArrayList

Java ArrayList — это универсальный изменяемый размер массива. Он предоставляет большинство возможностей, обычно ожидаемых от массивов на других языках. К ним относятся: доступ к элементам с использованием индекса, добавление, удаление и обновление элементов, динамическое изменение размера, перебор элементов и т. Д. Большинство из этих операций были специально настроены для общего использования.

Есть несколько других типов «массивов» (классов, которые реализуют интерфейс List , если быть техническим), которые предназначены для специальных целей. Они включают:

  • LinkedList поддерживает быструю вставку и удаление промежуточных индексов.
  • Vector похож на ArrayList, но синхронизирован и подходит вместо ArrayList для многопоточных приложений.
  • Стек поддерживает операции для имитации списка «первым пришел — первым вышел». Это расширяет Вектор и, следовательно, синхронизируется.

Иерархия классов ArrayList из коллекций Java

Эти специальные классы выходят за рамки данной статьи. Тем не менее, вы узнаете, как настроить и использовать универсальный Java ArrayList.

Создание ArrayList

Создать ArrayList очень просто. Пустой ArrayList может быть создан с помощью конструктора без аргументов. Здесь мы создаем пустой массив для хранения строк.

ArrayList alist = new ArrayList ();  ArrayList alist = new ArrayList ();  ArrayList alist = new ArrayList ();  

Если вы знаете, сколько элементов будет содержать ваш список массивов, вы можете указать начальную емкость. Эта начальная емкость является всего лишь подсказкой для выделения памяти — массив не ограничен указанным количеством элементов. Если вы знаете и указали начальную емкость, вы можете получить небольшое улучшение производительности.

 ArrayList alist = new ArrayList (20);  ArrayList alist = new ArrayList (20);  ArrayList alist = new ArrayList (20); 

Новый ArrayList с пустыми слотами

Заполнение ArrayList

Добавление предметов в конце

Заполнить arraylist довольно легко. Просто используйте метод add (), чтобы добавить один элемент в конец массива. Вот пример:

 ArrayList alist = new ArrayList (); alist.add("apple"); alist.add("banana"); alist.add("cantaloupe"); alist.add("orange"); System.out.println(alist); # prints [apple, banana, cantaloupe, orange]  ArrayList alist = new ArrayList (); alist.add("apple"); alist.add("banana"); alist.add("cantaloupe"); alist.add("orange"); System.out.println(alist); # prints [apple, banana, cantaloupe, orange]  ArrayList alist = new ArrayList (); alist.add("apple"); alist.add("banana"); alist.add("cantaloupe"); alist.add("orange"); System.out.println(alist); # prints [apple, banana, cantaloupe, orange] 

Чтобы узнать, сколько элементов в массиве, используйте метод size () .

 System.out.println("Number of elements in the arraylist: " + alist.size()); # prints Number of elements in the arraylist: 4 

Добавление элементов в ArrayList в конце.

Добавление элементов по указанному индексу

Хотите добавить элемент по произвольному индексу? Укажите индекс в качестве первого аргумента, и элемент будет добавлен в этот индекс:

 alist.add(3, "grapes"); System.out.println(alist); # prints [apple, banana, cantaloupe, grapes, orange] 

Добавление группы предметов

Вы также можете добавлять элементы из любой коллекции в иерархию коллекций Java. ArrayList — это определенный тип, называемый List . Вот способ создать список из набора элементов (используя Arrays.asList () ) и добавить его в ArrayList .

 List items = Arrays.asList("pear", "cherry"); alist.addAll(items); System.out.println(alist); # prints [apple, banana, cantaloupe, grapes, orange, pear, cherry]  List items = Arrays.asList("pear", "cherry"); alist.addAll(items); System.out.println(alist); # prints [apple, banana, cantaloupe, grapes, orange, pear, cherry] 

Конечно, вы можете указать индекс в качестве первого аргумента, чтобы добавить элементы, начинающиеся с этого индекса.

Доступ к элементам

Как только элементы будут добавлены в список рассылки, как мы снова получим доступ к ним?

Доступ с помощью индекса

Если вы знаете индекс элемента, вы можете использовать метод get (), чтобы получить элемент с этим индексом.

 String item = alist.get(2); System.out.println("Item at index 2 is: " + item); # prints Item at index 2 is: cantaloupe 

Нахождение предметов

Что если вы не знаете индекс предмета? Вы можете использовать indexOf (), чтобы проверить, присутствует ли элемент в массиве, и получить его, используя возвращенный индекс.

 System.out.println(alist); int index = alist.indexOf("orange"); if ( index < 0 ) System.out.println("Item \"orange\" not found"); else System.out.println("Item \"orange\" found at index " + index); # prints [apple, banana, cantaloupe, grapes, orange, pear, cherry] Item "orange" found at index 4 

Что делать, если этот элемент отсутствует в массиве? Метод indexOf () возвращает -1, если элемент не найден.

 index = alist.indexOf("grape"); if ( index < 0 ) System.out.println("Item \"grape\" not found"); else System.out.println("Item \"grape\" found at index " + index); # prints Item "grape" not found 

Итерация по списку ArrayList

Конечно, наиболее распространенное использование ArrayList — это перебор элементов. Это может быть достигнуто несколькими способами. Мы покажем пару простых здесь.

Вот самый простой способ перебора массива и извлечения элементов для некоторой обработки.

 for (String fruit : alist) { System.out.println("Found fruit \"" + fruit + "\""); } # prints Found fruit "apple" Found fruit "banana" Found fruit "cantaloupe" Found fruit "grapes" Found fruit "orange" Found fruit "pear" Found fruit "cherry" 

Этот код использует расширенный цикл Java, который был представлен в Java 1.5. До этого вы можете перебирать элементы с помощью итератора. Итератор также используется, когда вам нужно удалить элементы в процессе итерации, как показано в примере ниже. (Обратите внимание, что мы делаем копию массива и работаем над копией.)

 ArrayList blist = new ArrayList (alist); for (Iterator iter = blist.iterator() ; iter.hasNext() ; ) { String fruit = iter.next(); if ( fruit.startsWith("c") ) iter.remove(); else System.out.println("Keeping \"" + fruit + "\""); } # prints Keeping "apple" Keeping "banana" Keeping "grapes" Keeping "orange" Keeping "pear"  ArrayList blist = new ArrayList (alist); for (Iterator iter = blist.iterator() ; iter.hasNext() ; ) { String fruit = iter.next(); if ( fruit.startsWith("c") ) iter.remove(); else System.out.println("Keeping \"" + fruit + "\""); } # prints Keeping "apple" Keeping "banana" Keeping "grapes" Keeping "orange" Keeping "pear"  ArrayList blist = new ArrayList (alist); for (Iterator iter = blist.iterator() ; iter.hasNext() ; ) { String fruit = iter.next(); if ( fruit.startsWith("c") ) iter.remove(); else System.out.println("Keeping \"" + fruit + "\""); } # prints Keeping "apple" Keeping "banana" Keeping "grapes" Keeping "orange" Keeping "pear" 

Замена предметов

Как только элементы добавлены, нам нужен способ заменить ненужные элементы. Это можно сделать с помощью метода set () с индексом.

 alist.set(5, "pineapple"); System.out.println(alist); # prints [apple, banana, cantaloupe, grapes, orange, pineapple, cherry] 

Удаление предметов

Давайте теперь посмотрим, как мы можем удалить элементы из массива. Если вы знаете индекс элемента (возможно, вы использовали indexOf (), описанный выше), вы можете использовать метод remove () с индексом. Возвращает удаленный элемент.

 String fruit = alist.remove(2); System.out.println("Removed element at 2: " + fruit); # prints Removed element at 2: cantaloupe 

Вы также можете указать элемент для удаления первого вхождения элемента в списке. Метод возвращает true, если элемент был найден и удален.

 fruit = "grapes"; System.out.println("Remove " +fruit+ " from the list? " + alist.remove(fruit)); # prints Remove grapes from the list? true 

Как вы используете ArrayList в своих проектах и ​​с какими специальными проблемами вы столкнулись? Пожалуйста, дайте нам знать в комментариях ниже.

Похожие посты
Программирование

Что такое канал RSS? (И где его взять)

Программирование

7 причин, почему изображения не загружаются на ваш сайт

Программирование

Запустите агент SQL Server: настройте SQL Server 2012

Программирование

15 лучших бесплатных обоев дня Святого Патрика