Перейти к содержимому

Как узнать длину arraylist в java

  • автор:

Списочный массив ArrayList

Усвоив, что такое массивы, можно поближе изучить java.util.ArrayList — самый популярный вид списков. По названию пространства имён видно, что данный класс относится к Java.

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

Массивы имеют фиксированную длину, и после того как массив создан, он не может расти или уменьшаться. ArrayList может менять свой размер во время исполнения программы, при этом не обязательно указывать размерность при создании объекта. Кроме того, вы без проблем можете вставить новый элемент в середину коллекции. А также спокойно удалить элемент из любого места. Элементы ArrayList могут быть абсолютно любых типов в том числе и null. Это удобно, когда вы не знаете точного размера массива. Для сравнения — гостиница для котов имеет фиксированное число номеров, массив использовать можно. Вы владелец преуспевающей компании и число наёмных работников постоянно увеличивается, обычный массив создавать для учёта сотрудников нецелесообразно. В этом случае удобнее работать со списочным массивом. Иногда говорят, что ArrayList — это массив на стероидах (продвинутый).

Работать с ArrayList просто: создайте нужный объект, вставьте объект методом add(), обращайтесь к нему методом get(), используйте индексирование так же, как для массивов, но без квадратных скобок. ArrayList также содержит метод size(), который возвращает текущее количество элементов в массиве (напомню, что в обычном массиве используется свойство length).

Переменные принято называть во множественном числе.

Рассмотрим на примерах.

 ArrayList catNames = new ArrayList(); catNames.add("Васька"); mResultEditText.setText(catnamesList.get(0)); 

Запускаем программу и видим, что в текстовом поле отобразилось имя кота Васьки. Что же произошло? Мы объявили экземпляр класса ArrayList под именем catNames и через метод add() добавили имя. Списочный массив стал содержать одну строку и мы можем в этом убедиться, когда выводим в текстовом поле первый элемент массива через индекс, равный 0.

Продолжим опыт. Перенесём объявление класса на уровень нашего основного класса и добавим через кнопку ещё два имени.

 private ArrayList mCatNames = new ArrayList(); @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = (Button) findViewById(R.id.buttonGetResult); mResultEditText = (EditText) findViewById(R.id.editText); mInfoTextView = (TextView) findViewById(R.id.textViewInfo); mCatNames.add("Васька"); mResultEditText.setText(mCatNames.get(0)); >public void onClick(View view)

Что теперь произошло? В методе onCreate() как прежде добавляется одно имя, которое выводится в текстовом поле. При нажатии на кнопку мы добавляем ещё два имени, а в текстовой метке выводим имя второго кота через метод catnamesList.get(1).

Хорошо, мы знаем, что добавили трёх котов и поэтому можем обращаться через индекс 0, 1 или 2. А если котов стало слишком много, и мы запутались в их количестве? Тогда нужно вызвать метод size(), который вернёт общее число элементов массива. В этом случае, чтобы получить имя последнего кота в массиве, нужно получить размер массива и отнять единицу.

 mInfoTextView.setText(mCatNames.get(mCatNames.size() - 1)); 

Вроде бы всё замечательно. Но студия выводит предупреждение у кода метода add(). Почему?

Мы знаем, что у кота есть четыре лапы и хвост. Создадим отдельную переменную для количества лап и попробуем запихнуть их в массив имён. Выглядит как бред, но Java не ругается на наши действия. Вы можете через метод size() убедиться, что размер массива увеличился. Но при попытке вывести последний элемент получим ошибку.

 public void onClick(View view) < mCatNames.add("Мурзик"); mCatNames.add("Рыжик"); int paws = 4; // четыре лапы mCatNames.add(paws); mInfoTextView.setText(mCatNames.get(mCatNames.size() - 1)); >

Чтобы вы не совершали подобных ошибок, был придуман следующий подход. Когда вы создаёте новый объект для массива, то в угловых скобках сразу указываете, какой тип собираетесь использовать.

 ArrayList mCatNames = new ArrayList<>(); 

Как только вы исправите пример, то строчка mCatNames.add(paws); будет сразу подчёркнута красной линией. Java поняла, что мы хотим использовать в массиве только строки, а не числа. Поэтому, вы уже не совершите глупых ошибок. Удалите неправильную строку, остальное можно оставить без изменений.

 private ArrayList mCatNames = new ArrayList(); @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = findViewById(R.id.buttonGetResult); mResultEditText = findViewById(R.id.editText); mInfoTextView = findViewById(R.id.textViewInfo); mCatNames.add("Васька"); mResultEditText.setText(mCatNames.get(0)); >public void onClick(View view) < mCatNames.add("Мурзик"); mCatNames.add("Рыжик"); // добавим ещё одного наглого кота. Он очень настаивал mCatNames.add("Барсик"); // выводим имя последнего кота из массива и размер массива mInfoTextView.setText(mCatNames.get(mCatNames.size() - 1) + " Размер массива " + mCatNames.size()); >

Теперь студия не ругается, и мы можем свернуться калачиком и поспать.

Такая форма записи с угловыми скобками говорит о том, что мы использовали generic-класс (дженерик или обобщение) с типизированными параметрами.

В Java 7 появилась укороченная запись, называемая ромбовидной. Вы можете опустить параметр с правой стороны выражения.

 ArrayList mCatNames = new ArrayList<>(); 

В обобщениях можно использовать только объекты классов. Поэтому запись ArrayList не прокатит. В таких случаях следует использовать класс Integer: ArrayList . Но с другой стороны это чревато большим расходом памяти.

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

 ArrayList cats = new ArrayList<>(); cats.add(new Cat("Васька")); cats.add(new Cat("Барсик")); 

Метод add()

Метод add() самый популярный и не требует особых объяснений. Только не забывайте, что существует перегруженная версия метода, позволяющая вставлять элемент в нужную позицию.

 cats.add(2, new Cat("Рыжик")); 

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

Методы ensureCapacity() и trimToSize()

Если заранее известно, сколько элементов следует хранить, то перед заполнением массива вызовите метод ensureCapacity():

 mCatNames.ensureCapacity(100); 

Первоначальную ёмкость можно задать и в конструкторе в качестве параметра.

 ArrayList mCatNames = new ArrayList<>(100); 

Если вы уверены, что списочный массив будет иметь постоянный размер, то можете использовать метод trimToSize(). Это может способствовать рациональному использованию памяти.

Метод indexOf()

Предположим, мы внимательно следим за Рыжиком. Когда он был последним, то его легко было вычислить. Зная размер массива, мы вычитали единицу и получали к нему доступ. Но потом мы стали добавлять в массив других котов и уже не сможем понять, где теперь наш Рыжик. Но выход всегда есть. Существует метод indexOf(), который ищет подходящий элемент и выводит его индекс.

 int index = mCatNames.indexOf("Рыжик"); // выводим имя кота и его номер в массиве mInfoTextView.setText("Рыжик числится под номером " + index); 

Не забываем, что отсчёт массива идёт с 0, если индекс равен 2, значит он является третим в массиве.

Просмотр всех элементов через цикл

Чтобы вывести всех усатых-полосатых на чистую воду, используем цикл for:

 String catName = ""; for (int i = 0; i < mCatNames.size(); i++) < catName = catName + mCatNames.get(i) + " "; >mInfoTextView.setText("Все коты: " + catName); 

Или укороченная запись:

 String catName = ""; for (String name : mCatNames) < catName = catName + name + " "; >mInfoTextView.setText("Все коты: " + catName); 

Метод contains()

Чтобы узнать, есть в массиве какой-либо элемент, можно воспользоваться методом contains(), который вернёт true или false:

 mInfoTextView.setText(mCatNames.contains("Бобик") + ""); 

Понятно, что в нашем массиве никаких бобиков и барбосов быть не может, поэтому появится надпись false.

Метод remove() — удаление элемента

Для удаления элемента из массива используется метод remove(). Можно удалять по индексу или по объекту:

 mCatNames.remove(0); // удаляем по индексу mCatNames.remove("Васька"); // удаляем по объекту 

Элементы, следующие после удалённого элемента, сдвигаются влево, а размер списочного массива уменьшается на единицу.

Метод removeAll() удаляет сразу все элементы. Но лучше использовать метод clear().

Метод removeIf() — удаление элемента по предикату (Java 8)

Раньше, если нужно было удалить элемент из списка по условию, приходилось проходить в цикле по всем элементам и сравнивать их с условием. В Java 8 появился новый метод removeIf(), позволяющий упростить код. Метод использует предикат — вы указываете условие, если оно выполняется, то происходит удаление элемента из списка.

 ArrayList numList = new ArrayList<>(); numList.add(51); numList.add(14); numList.add(11); numList.add(12); numList.add(31); numList.add(21); System.out.println("Оригинал: " + numList.toString()); // удаляем элементы, которые больше 10 и меньше 20 numList.removeIf(i -> (i > 10 && i < 20)); System.out.println("Новый список: " + numList.toString()); // Оригинал: [51, 14, 11, 12, 31, 21] // Новый список: [51, 31, 21] 

Метод set() - замена элемента

Чтобы заменить элемент в массиве, нужно использовать метод set() с указанием индекса и новым значением. Предположим, вы обнаружили, что у вас не кот Мурзик, а кошка Мурка. Нет проблем.

 mCatNames.add("Васька"); mCatNames.add("Мурзик"); mCatNames.add("Рыжик"); mCatNames.set(1, "Мурка"); mInfoTextView.setText(mCatNames.get(1) + ""); 

Метод clear() - очистка массива

Для очистки массива используется метод clear():

 mCatNames.clear(); 

Метод работает гораздо быстрее похожего метода removeAll().

Метод toArray() - конвертируем в обычный массив

Также можно сконвертировать из нашего списка в обычный массив и выполнить другие операции. Читайте документацию.

 ArrayList days = new ArrayList<>(); days.add("Monday"); days.add("Tuesday"); days.add("Wednesday"); days.add("Thursday"); days.add("Friday"); days.add("Saturday"); days.add("Sunday"); String[] daysArray = days.toArray(new String[days.size()]); System.out.println("Массив: " + Arrays.toString(daysArray)); 

Конвертация в массив может понадобится для ускорения некоторых операций, передачи массива в качестве параметра методам, которые требуют именно массив и другие причины.

Можно было реализовать эту задачу самостоятельно - создать пустой массив, в цикле пройтись по элементам ArrayList и поместить каждый элемент в массив. Важно только проследить за размером массива, который должен совпасть с размером списка.

 ArrayList days = new ArrayList<>(); days.add("Monday"); days.add("Tuesday"); days.add("Wednesday"); days.add("Thursday"); days.add("Friday"); days.add("Saturday"); days.add("Sunday"); String[] daysArray = new String[days.size()]; for (int i = 0; i < days.size(); i++) < daysArray[i] = days.get(i); >System.out.println("Массив: " + Arrays.toString(daysArray)); 

В Java 8 появился ещё один вариант через Stream.

 ArrayList days = new ArrayList<>(); days.add("Monday"); days.add("Tuesday"); days.add("Wednesday"); days.add("Thursday"); days.add("Friday"); days.add("Saturday"); days.add("Sunday"); String[] daysArray = days.stream().toArray(String[]::new); System.out.println("Массив: " + Arrays.toString(daysArray)); 

Сколько раз совпадают элементы

В списочном массиве значения вполне могут совпадать. Например, среди котов попадаются однофамильцы и мы их спокойно можем запихнуть в ArrayList. Но сколько раз повторяются одинаковые элементы?

 ArrayList cats = new ArrayList<>(); cats.add("Мурзик"); cats.add("Васька"); cats.add("Мурзик"); int count = Collections.frequency(cats, "Мурзик"); // получим результат 2 mInfoTextView.setText(String.valueOf(count)); // выводим результат в TextView 

Интерфейс List

java.util.List является интерфейсом и его можно использовать вместо ArrayList следующим образом:

 List catnamesList = new ArrayList(); 

Или укороченный вариант для Java 7:

 List catnamesList = new ArrayList<>(); 

Как видите, мы заменили ArrayList на List, но при этом в объявлении оставили new ArrayList(). Всё остальное остаётся без изменений. Кстати, этот способ является рекомендуемым. Но иногда он может не подойти.

Контейнеры List гарантируют определённый порядок следования элементов. Интерфейс List дополняет Collection несколькими методами, обеспечивающими вставку и удаление элементов в середине списка.

Существует две основные разновидности List:

  • Базовый контейнер ArrayList, оптимизированный для произвольного доступа к элементам, но с относительно медленными операциями вставки/удаления элементов в середине списка.
  • Контейнер LinkedList, оптимизированный для последовательного доступа, с быстрыми операциями вставки/удаления в середине списка. Произвольный доступ к элементам LinkedList выполняется относительно медленно, но по широте возможностей превосходит ArrayList.

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

Метод contains() проверяет, присутствует ли объект в списке. Чтобы удалить объект, передайте ссылку на него методу remove(). Кроме того, если у вас имеется ссылка на объект, вы можете определить индекс объекта в List при помощи метода indexOf().

Сам List реализует более общий интерфейс коллекции Collection и можно было даже написать:

 Collection mCatNames = new ArrayList(); 

Но у Collection нет методов set() и get(), поэтому работать с таким интерфейсом не очень удобно.

Для создания массива можно не только добавлять по одному объекту через метод add(), но и сразу массив через метод Arrays.asList().

Оставим пока в покое котов и создадим массив из объектов Integer.

 List numbers = Arrays.asList(1, 2, 5, 9, 11); mInfoTextView.setText(numbers.get(2) + ""); // выводит число 5 

Но у данного способа есть недостаток. Если вы определили массив таким образом, то уже не можете вставлять или удалять другой элемент (методы add() и delete()), хотя при этом можете изменять существующий элемент.

 List numbers = Arrays.asList(1, 2, 5, 9, 11); numbers.set(2, 33); // так можно //numbers.add(34); // нельзя, ошибка во время исполнения mInfoTextView.setText(numbers.get(2) + ""); 

В Android 11 (R) обещают добавить несколько перегруженных версий метода of(), которые являются частью Java 8.

Заключение

С ArrayList работать проще и удобнее, чем с массивами. Можно без проблем добавлять новые элементы, в том числе и в середину листа. А в случае использования обычного массива вам придётся заново выделять память и перезаписывать элементы, так как размер массива поменять нельзя, после того как была выделена память.

Работа с массивом быстрее и можно использовать массив, если точно знаете заранее размер массива и вам не придётся его динамически менять, делать вставки и т.д.

Структура данных в картинках

Теперь, когда вы получили представление об ArrayList, заглянем за кулисы и посмотрим, как данные хранятся в этом объекте. Источник

 ArrayList list = new ArrayList(); 

Только что созданный объект list содержит свойства elementData и size.

Хранилище значений elementData есть ни что иное как массив определенного типа (указанного в generic), в нашем случае String[]. Если вызывается конструктор без параметров, то по умолчанию будет создан массив из 10-ти элементов типа Object (с приведением к типу, разумеется).

 elementData = (E[]) new Object[10]; 

ArrayList

Добавим новый элемент:

 list.add("0"); 

ArrayList

Внутри метода add(value) происходят следующие вещи:

1) проверяется, достаточно ли места в массиве для вставки нового элемента;

 ensureCapacity(size + 1); 

2) добавляется элемент в конец (согласно значению size) массива.

 elementData[size++] = element; 

Если места в массиве не достаточно, новая ёмкость рассчитывается по формуле (oldCapacity * 3) / 2 + 1. Второй момент это копирование элементов. Оно осуществляется с помощью native-метода System.arraycopy(), который написан не на Java.

 // newCapacity - новое значение емкости elementData = (E[])new Object[newCapacity]; // oldData - временное хранилище текущего массива с данными System.arraycopy(oldData, 0, elementData, 0, size); 

Ниже продемонстрирован цикл, поочередно добавляющий 15 элементов:

 list.add("1"); 

ArrayList

Продолжаем добавлять 2, 3, 4, .

 list.add("9"); 

ArrayList

 list.add("10"); 

При добавлении 11-го элемента, проверка показывает что места в массиве нет. Соответственно создается новый массив и вызывается System.arraycopy().

ArrayList

После этого добавление элементов продолжается.

ArrayList

Рассмотрим добавление в «середину» списка.

 list.add(5, "100"); 

Добавление элемента на позицию с определенным индексом происходит в три этапа:

1) проверяется, достаточно ли места в массиве для вставки нового элемента;

 ensureCapacity(size+1); 

2) подготавливается место для нового элемента с помощью System.arraycopy();

 System.arraycopy(elementData, index, elementData, index + 1, size - index); 

3) перезаписывается значение у элемента с указанным индексом.

 elementData[index] = element; size++; 

Как можно догадаться, в случаях, когда происходит вставка элемента по индексу и при этом в вашем массиве нет свободных мест, то вызов System.arraycopy() случится дважды: первый в ensureCapacity(), второй в самом методе add(index, value), что явно скажется на скорости всей операции добавления.

В случаях, когда в исходный список необходимо добавить другую коллекцию, да еще и в «середину», стоит использовать метод addAll(index, Collection). И хотя, данный метод скорее всего вызовет System.arraycopy() три раза, в итоге это будет гораздо быстрее поэлементного добавления.

Удалять элементы можно двумя способами:

— по индексу remove(index)
— по значению remove(value)

С удалением элемента по индексу всё достаточно просто:

 list.remove(5); 

Сначала определяется какое количество элементов надо скопировать:

 int numMoved = size - index - 1; 

Затем копируем элементы используя System.arraycopy():

 System.arraycopy(elementData, index + 1, elementData, index, numMoved); 

Уменьшаем размер массива и забываем про последний элемент:

 elementData[--size] = null; // Let gc do its work 

При удалении по значению, в цикле просматриваются все элементы списка, до тех пор пока не будет найдено соответствие. Удален будет лишь первый найденный элемент.

При удалении элементов текущая величина capacity не уменьшается, что может привести к своеобразным утечкам памяти. Поэтому не стоит пренебрегать методом trimToSize().

Объединяем два ArrayList

С помощью библиотеки Apache Commons Collections можно объединить два ArrayList.

 List listA = new ArrayList(); listA.add("Васька"); listA.add("Барсик"); listA.add("Мурзик"); List listB = new ArrayList(); listB.add("Пушок"); listB.add("Снежок"); listB.add("Рыжик"); // объединяем два списочных массива List listAB = ListUtils.union(listA, listB); System.out.println("listA : " + listA); System.out.println("listB : " + listB); System.out.println("listAB : " + listAB); 

Сортировка

Сортировать элементы можно при помощи метода Collections.sort().

 List items = new ArrayList<>(); items.add("d"); items.add("c"); items.add("b"); items.add("a"); Collections.sort(items); System.out.println(items.toString()); 

Интерфейс ListIterator

На практике он мне не встречался. Позволяет проходить по всем элементам вперёд или назад. Для этого он проверяет, есть ли следующий/предыдущий элемент после текущего.

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

 ArrayList numbers = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); ListIterator iterator = numbers.listIterator(); System.out.println("Iterating in forward direction: "); while (iterator.hasNext()) < System.out.println(iterator.next()); >System.out.println(); System.out.println("Iterating in backward direction: "); while (iterator.hasPrevious())

Списочный массив 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():

list.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 следующим образом :

List list = new ArrayList();

Или укороченный вариант для Java 7:

List list = new ArrayList<>();

В примере тип 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 в Java

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

Допустим, имеется ArrayList целых чисел:

ArrayList<Integer> numbers = new ArrayList<Integer>(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(4); numbers.add(5);

В этом массиве последним элементом является число 5. Как его получить?

Один из самых простых и часто используемых способов получения последнего элемента ArrayList — это использование метода get() , который возвращает элемент ArrayList по указанному индексу.

Однако, важно помнить, что индексы в ArrayList начинаются с нуля. Это означает, что если размер ArrayList равен 5 (как в приведенном выше примере), то последний элемент будет находиться на позиции с индексом 4.

Следовательно, чтобы получить последний элемент ArrayList, нужно вызвать метод get() , передав ему в параметре индекс последнего элемента. Индекс последнего элемента можно получить, уменьшив на единицу значение, возвращаемое методом size() , который возвращает количество элементов в ArrayList.

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

int lastElement = numbers.get(numbers.size() - 1);

В переменной lastElement будет храниться значение последнего элемента ArrayList, то есть число 5.

Итак, получение последнего элемента из ArrayList в Java — это простая задача, которую можно решить с помощью методов get() и size() . Надеюсь, эта информация поможет вам в дальнейшей работе с ArrayList в Java.

Операции Java ArrayList

ArrayList - одна из самых гибких структур данных из коллекций Java. Arraylist - это класс, который реализует интерфейс List. Он является одним из широко используемых из-за функциональности и гибкости, которые он предлагает. Он предназначен для хранения неоднородных коллекций объектов. Емкость ArrayList - это количество элементов, которые может содержать ArrayList. Поскольку элементы добавляются в ArrayList, емкость динамически увеличивается по мере необходимости путем перераспределения. Он также может содержать повторяющиеся элементы. Элементы в этой коллекции можно получить с помощью целочисленного индекса. Индексы в этой коллекции основаны на нуле. Он позволяет осуществлять произвольный доступ, поскольку массив работает на основе индекса. Кроме того, он поддерживает порядок вставки.

Как добавить элементы в ArrayList?

import Java.util.*; class TestClass < public static void main (String[] args) throws Java.lang.Exception < // создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); // добавление элемента aList.add("Monday"); aList.add("Tuesday"); >>

Как напечатать элемент arraylist?

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); Iterator ir=aList.iterator(); while(ir.hasNext())

Вывод:
Sunday Monday Tuesday

Как найти длину / размер ArrayList в Java?

Используя метод size() класса ArrayList, мы можем легко определить размер ArrayList. Этот метод возвращает количество элементов в объекте ArrayList.

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); System.out.println(aList.size());
Вывод:

Как получить конкретный элемент ArrayList?

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); System.out.println(aList.get(1));
Вывод:
Monday

Доступ к элементам в ArrayList можно получить с помощью целочисленного индекса, а индексы ArrayList начинаются с нуля. Таким образом, aList.get (1) возвращает второй элемент из ArrayList.

Как получить первый элемент Arraylist?

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); System.out.println(aList.get(0));
Вывод:
Sunday

Поскольку индексы ArrayList начинаются с нуля, aList.get (0) возвращает первый элемент ArrayList.

Как получить последний элемент Arraylist?

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); System.out.println(aList.get(aList.size()-1));

AList.size() возвращает итоговые элементы в ArrayList. Поскольку индексы ArrayList начинаются с нуля, aList.size() - 1 возвращает последний элемент ArrayList.

Как удалить все элементы из Java ArrayList?

Вы можете использовать два разных метода для удаления arraylist в Java. Это ArrayList.clear() и ArrayList.removeAll()

//ArrayList.clear(): // создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); System.out.println(aList.size()); aList.clear(); System.out.println(aList.size());
Вывод:
Пример ArrayList.removeAll():
// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); System.out.println(aList.size()); aList.removeAll(aList); System.out.println(aList.size());
Вывод:

В случае removeAll вы должны передать тот же ArrayList, что и аргумент.

В случае removeAll вы должны передать тот же ArrayList, что и аргумент.

Методы clear() и removeAll (коллекция) служат в двух разных целях. Метод clear() будет проходить через лежащий в основе массив и установить каждую запись в null, а removeAll (collection) будет проходить проверку ArrayList для сбора и удаления (Object), если она существует. Таким образом, это подтверждает, что clear() выполняется намного быстрее, поскольку ему не нужно иметь дело со всеми этими вызовами дополнительных методов. Как удалить определенный элемент из ArrayList? В общем случае объект может быть удален двумя способами из ArrayList (или вообще любого Списка), по индексу (remove (int)) и по объекту (remove (Object)).

Удалить объект (удалить (объект)):
// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); aList.remove("Monday");

Здесь мы передаем аргумент как строковый объект «Понедельник», поэтому он будет удален из коллекции.

Удалить по индексу:
// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); aList.remove(1);

Здесь мы передаем аргумент как index remove (1) «Monday», поэтому он будет удален из коллекции.

Как отсортировать ArrayList в Java?

В ArrayList элементы помещаются по мере их вставки. Но при кодировании вы часто нуждаетесь в них в некотором порядке. для сортировки ArrayList используется метод sort() класса Collections.

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); System.out.println("Before sort. "); Iterator ir=aList.iterator(); while(ir.hasNext()) < System.out.println(ir.next()); >Collections.sort(aList); System.out.println("After sort. "); ir=aList.iterator(); while(ir.hasNext())

Вывод:
Before sort. Sunday Monday Tuesday After sort. Monday Sunday Tuesday
Сортировка ArrayList в обратном порядке?

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); Collections.sort(aList,Collections.reverseOrder()); Iterator ir=aList.iterator(); while(ir.hasNext())

Вывод:
Tuesday Sunday Monday

Поиск элемента в Java ArrayList

Вы можете проверить, существует ли значение в Java ArrayList, используя следующие методы: ArrayList.contains(), ArrayList.indexOf() и ArrayList.lastIndexOf()

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); // Использование метода contains if (aList.contains("Monday")) < System.out.println("Account found"); >else < System.out.println("Account not found"); >// использование метода indexOf int val = aList.indexOf("Monday"); if (val !=-1) < System.out.println("Item found"); >else < System.out.println("Item not found"); >// использование метода lastIndexOf int val = aList.lastIndexOf("Monday"); if (val !=-1) < System.out.println("Item found"); >else

Преобразование массива в массив

Класс ArrayList имеет метод, называемый toArray(), который мы можем использовать для преобразования ArrayList в массивы.

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); String[] arr = (String[])aList.toArray(new String[aList.size()]); for(String item : arr) System.out.println(item);
Вывод:
Sunday Monday Tuesday

Преобразование массива в ArrayList

// создаем массив Object String days[]=; ArrayList < String>arrList= new ArrayList < String>(Arrays.asList(days)); for(String item : arrList) System.out.println(item);
Вывод:
Sunday Monday Tuesday

Преобразование ArrayList в строку

Метод String join() поможет вам преобразовать ArrayList в String. Метод Java string join() возвращает строку, связанную с данным разделителем. В методе объединения строк для каждого элемента копируется разделитель.

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); String result = String.join(",", aList); System.out.println(result);
Вывод:
Sunday,Monday,Tuesday

Преобразование ArrayList в список

// создаем список массивов Object ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Tuesday"); List list = aList; Iterator ir=list.iterator(); while(ir.hasNext())< System.out.println(ir.next());
Вывод:
Sunday Monday Tuesday

Следующая программа Java иллюстрирует большинство вышеупомянутых методов в одной программе

import Java.util.*; class TestClass < public static void main (String[] args) throws Java.lang.Exception < // создаем новый объект ArrayList ArrayList aList = new ArrayList(); aList.add("Sunday"); aList.add("Monday"); aList.add("Wednesday"); // использование Iterator для просмотра всех элементов в ArrayList Iterator < String>itr = aList.iterator(); while(itr.hasNext()) < System.out.println(itr.next()); >// добавление элемента по указанному индексу aList.add(2,"Tuesday"); System.out.println(aList); // Извлечение элементов ArrayList по индексу System.out.println(aList.get(2)); // Поиск элемента в ArrayList if(aList.contains("Monday")) System.out.println("Item Found"); else System.out.println("Item not Found"); // Удаление одного элемента из ArrayList по индексу aList.remove(1); System.out.println(aList); // Удаление всех элементов из ArrayList aList.clear(); // Проверка вектора - это ArrayList или нет. if(aList.isEmpty()) System.out.println("ArrayList Empty !!"); else System.out.println("ArrayList Contains: " + aList.size() + " elements !!"); > >

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *