Как очистить list java
Перейти к содержимому

Как очистить list 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())

Удалить все элементы из списка в Java

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

1. Использование clear() метод

Стандартным решением для удаления всех элементов из списка является использование clear() метод, который эффективно делает список пустым. Обратите внимание, что он работает только с изменяемыми списками и выдает UnsupportedOperationException за неизменяемый список.

import java . util . List ;
import java . util . stream . Collectors ;
import java . util . stream . Stream ;
class Main
public static void main ( String [ ] args )
List collection = Stream . of ( "A" , "B" , "C" , "D" )
. collect ( Collectors . toList ( ) ) ;
collection . clear ( ) ;
System . out . println ( collection ) ; // []

Ниже приведен исходный код clear() метод для реализации ArrayList List интерфейс. Он устанавливает буфер массива, в котором хранятся элементы списка, равным нулю. Для реализаций списка на основе дерева он просто устанавливает корень равным нулю.

public void clear ( ) < final Object [ ] es = elementData ; for ( int to = size , i = size = 0 ; i < to ; i ++ ) es [ i ] = null ;

2. Использование removeAll() метод

Альтернативная идея состоит в том, чтобы вызвать removeAll() метод, который удаляет из списка все элементы, присутствующие в указанной коллекции. Это показано ниже:

import java . util . List ;
import java . util . stream . Collectors ;
import java . util . stream . Stream ;
class Main
public static void main ( String [ ] args )
List collection = Stream . of ( "A" , "B" , "C" , "D" ) . collect ( Collectors . toList ( ) ) ;
collection . removeAll ( collection ) ;
System . out . println ( collection ) ; // []

Этот подход не рекомендуется, так как он будет очень медленным для большой коллекции.

3. Использование remove() метод

Начиная с Java 8, мы можем получить поток элементов в списке и вызвать метод remove() метод для каждого элемента.

Это показано ниже. Обратите внимание, что мы использовали копию списка, чтобы избежать java.util.ConcurrentModificationException , так как Java не допускает одновременного изменения List экземпляр во время итерации по нему:

Как очистить list java

JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.

Подписывайтесь

Язык интерфейса

"Программистами не рождаются" © 2023 JavaRush

Скачивайте наши приложения

"Программистами не рождаются" © 2023 JavaRush

Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.

Операции 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 не будет опубликован. Обязательные поля помечены *