Класс ArrayList. Методы изменяющие данные в массиве
Содержание
- 1. Метод add(). Добавить элемент в конец массива
- 2. Метод addAll(). Добавить коллекцию к массиву
- 3. Метод clear(). Очистить массив
- 4. Метод remove(). Удалить элемент в указанной позиции
- 5. Метод removeAll(). Удалить группу элементов из коллекции
- 6. Метод removeIf(). Изменить коллекцию на основе предиката
- 7. Метод replaceAll(). Произвести вычисления над каждым элементом массива
- 8. Метод set(). Установить новое значение в элементе
- 9. Метод sort(). Отсортировать элементы массива
- Связанные темы
Поиск на других ресурсах:
1. Метод add(). Добавить элемент в конец массива
Метод add() добавляет элемент в массив. Метод имеет две перегруженные реализации
add(E obj)
add(int index, E obj)
здесь
- E – тип элементов массива;
- obj – объект (элемент), добавляемый к массиву;
- index – позиция, в которую нужно вставить элемент obj в массив.
Пример. В примере формируется массив квадратов чисел от 1 до 10. Для добавления числа в конец массива используется метод add().
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод addAll() - добавить элемент в конец массива // 1. Создать массив из чисел типа Integer ArrayList<Integer> AI = new ArrayList(); // 2. Добавить в массив квадраты чисел от 1 до 10 for (int i=1; i<=10; i++) AI.add(i*i); // 3. Вывести массив System.out.println(AI); // 4. Добавить число 555 на начало массива в позицию 0 AI.add(0, 555); System.out.println(AI); } }
Результат выполнения программы
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] [555, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
⇑
2. Метод addAll(). Добавить коллекцию к массиву
Метод addAll() предназначен для добавления уже существующей коллекции в массив. Коллекцией могут быть коллекция, очередь, другой массив и т.д. Метод имеет две перегруженные реализации
addAll(Collection<? extends E>) addAll(int index, Collection<? extends E>)
здесь
- E – тип элементов массива (коллекции);
- index – позиция, с которой происходит вставка.
Пример. Демонстрируется использование метода addAll() для массива целых чисел.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод addAll() - добавить коллекцию к массиву // 1. Создать массив из 5 чисел типа Float ArrayList<Float> AI = new ArrayList(); AI.add(1.0f); AI.add(2.0f); AI.add(3.0f); AI.add(4.0f); AI.add(5.0f); System.out.println("AI = " + AI); // 2. Создать другой массив из 3 чисел типа Float ArrayList<Float> AI2 = new ArrayList(); for (int i=1; i<=3; i++) AI2.add(i*15f); System.out.println("AI2 = " + AI2); // 3. Добавить массив AI2 в конец массива AI AI.addAll(AI2); System.out.println("AI + AI2 = " + AI); // 4. Записать массив AI2 в массив AI начиная с позиции 2 AI.addAll(2, AI2); System.out.println("AI[2] + AI2 = " + AI); } }
Результат выполнения программы
AI = [1.0, 2.0, 3.0, 4.0, 5.0] AI2 = [15.0, 30.0, 45.0] AI + AI2 = [1.0, 2.0, 3.0, 4.0, 5.0, 15.0, 30.0, 45.0] AI[2] + AI2 = [1.0, 2.0, 15.0, 30.0, 45.0, 3.0, 4.0, 5.0, 15.0, 30.0, 45.0]
⇑
3. Метод clear(). Очистить массив
Метод clear() предназначен для очищения массива. Согласно документации общая форма объявления метода следующая
public void clear();
Пример. В примере создается коллекция из символов-разделителей.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод clear() - очистить коллекцию // 1. Создать коллекцию из разделительных символов в предложении ArrayList<Character> AL = new ArrayList(); AL.add(';'); AL.add(':'); AL.add(','); AL.add('.'); AL.add('!'); AL.add('?'); AL.add(' '); // 2. Вывести коллекцию System.out.println("AL => " + AL); // 3. Очистить коллекцию AL.clear(); // 4. Вывести коллекцию после очистки System.out.println("AL.clear() => " + AL); } }
Результат выполнения программы
AL => [;, :, ,, ., !, ?, ] AL.clear() => []
⇑
4. Метод remove(). Удалить элемент в указанной позиции
С помощью метода remove() можно удалить элемент в заданной позиции. Согласно документации, объявление метода следующее
public E remove(int index);
здесь
- E – тип элементов массива (коллекции);
- index – номер позиции, которую нужно удалить. Позиция нумеруется с 0.
Метод возвращает значение удаляемого элемента из массива (коллекции).
Если значение index указано за пределами допустимого диапазона
(index < 0 || index >= size())
то будет сгенерировано исключение IndexOutOfBoundsException.
Пример.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод remove() - удалить отдельный элемент из массива // 1. Создать коллекцию вещественных чисел ArrayList<Float> AL = new ArrayList<Float>(); AL.add(2.8f); AL.add(3.5f); AL.add(7.2f); AL.add(9.4f); AL.add(5.2f); // 2. Вывести коллекцию System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Удалить элемент в позиции 2, который имеет значение 7.2 AL.remove(2); // 4. Вывести измененную коллекцию System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); } }
Результат выполнения программы
AL => 2.8 3.5 7.2 9.4 5.2 AL => 2.8 3.5 9.4 5.2
⇑
5. Метод removeAll(). Удалить группу элементов из коллекции
С помощью метода removeAll() можно удалить несколько элементов, представленных в виде коллекции. Согласно документации объявление метода следующее:
public boolean removeAll(Collection<?> c);
здесь
- c – коллекция (массив) элементов, которые нужно удалить из текущей коллекции.
Метод возвращает true, если текущий массив изменился в результате вызова.
Пример.
В примере формируются две целочисленные коллекции:
- AL – исходная коллекция чисел;
- AL2 – коллекция чисел, которые необходимо удалить из коллекции AL.
С помощью метода removeAll() происходит удаление из коллекции AL всех частей, входящих в коллекцию AL2.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод removeAll() - удалить группу элементов из массива // 1. Создать коллекцию целых чисел ArrayList<Integer> AL = new ArrayList<Integer>(); AL.add(2); AL.add(3); AL.add(2); AL.add(4); AL.add(7); AL.add(3); AL.add(4); AL.add(5); AL.add(6); AL.add(1); // 2. Вывести исходную коллекцию System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Создать коллекцию чисел, которые нужно удалить ArrayList<Integer> AL2 = new ArrayList<Integer>(); // удалить все числа 2, 4, 7 AL2.add(2); AL2.add(4); AL2.add(7); // 4. Вызвать метод removeAll() AL.removeAll(AL2); // 4. Вывести измененную коллекцию System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); } }
Результат выполнения программы
AL => 2 3 2 4 7 3 4 5 6 1 AL => 3 3 5 6 1
⇑
6. Метод removeIf(). Изменить коллекцию на основе предиката
С помощью метода removeIf() можно удалить элементы из коллекции согласно условию. В результате формируется новая коллекция (массив). Общая форма объявления метода следующая
public boolean removeIf(Predicate<? super E> filter);
здесь
- filter – ссылка (предикат), определяющее условие фильтрования. Условие задается лямбда-выражением.
Метод возвращает true, если хотя бы один элемент был удалён.
Пример.
В примере демонстрируется выполнение метода removeIf(). Демонстрируются следующие операции:
- создается коллекция целых чисел;
- формируется предикат, в котором определяются числа, которые больше 4;
- вызывается метод removeIf(), с помощью которого формируется новый массив чисел согласно предикату.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод removeIf() - изменить массив по заданному условию // 1. Создать коллекцию целых чисел ArrayList<Integer> AL = new ArrayList<Integer>(); AL.add(2); AL.add(3); AL.add(2); AL.add(4); AL.add(7); AL.add(3); AL.add(4); AL.add(5); AL.add(6); AL.add(1); // 2. Вывести исходную коллекцию System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Объявить ссылку на интерфейс Predicate<Integer> Predicate<Integer> ref; // 4. Сформировать условие для ссылки ref на основе лямбда-выражения: // взять все числа, которые больше 4 ref = (value) -> value > 4; // 5. Вызвать метод removeIf() и передать ему ссылку ref условием AL.removeIf(ref); // удалить все числа, которые больше 4 // 6. Вывести измененный массив AL System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); } }
Результат выполнения программы
AL => 2 3 2 4 7 3 4 5 6 1 AL => 2 3 2 4 3 4 1
⇑
7. Метод replaceAll(). Произвести вычисления над каждым элементом массива
С помощью метода replaceAll() можно применить некоторую операцию к каждому элементу массива. Такой операцией может быть, например произведение каждого элемента на 2. Согласно документации, общая форма объявления метода следующая:
public void replaceAll(UnaryOperator<E> operator);
здесь
- operator – лямбда-выражение, определяющее операцию над каждым элементом последовательности. Лямбда-выражение формируется с помощью функционального интерфейса UnaryOperator<T>.
Пример. В примере создается массив целых чисел. Затем каждый элемент массива умножается на 3 с помощью метода replaceAll(). Для выполнения вычисления формируется ссылка на подходящее лямбда-выражение.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод replaceAll() - изменить значение элементов исходного массива // 1. Создать коллекцию целых чисел ArrayList<Integer> AL = new ArrayList<Integer>(); AL.add(2); AL.add(3); AL.add(2); AL.add(4); AL.add(7); AL.add(3); // 2. Вывести коллекцию с помощью итератора Iterator<Integer> it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) System.out.print(it.next()+" "); System.out.println(); // 3. Сформировать лямбда-выражение, которое умножает элемент на 3 UnaryOperator<Integer> op = (num) -> num*3; // 4. Вызвать метод replaceAll() и применить к нему оператор op AL.replaceAll(op); // 5. Вывести измененную коллекцию (массив) целых чисел it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) { System.out.print(it.next() + " "); } } }
Результат выполнения программы
AL => 2 3 2 4 7 3 AL => 6 9 6 12 21 9
⇑
8. Метод set(). Установить новое значение в элементе
Метод set() устанавливает новое значение в заданной позиции массива. Другими словами, старое значение массива в заданной позиции заменяется новым. Объявление метода имеет вид
public E set(int index, E element);
здесь
- index – позиция вставки (нумеруется с 0);
- element – новое значение, которое необходимо установить в позиции index.
Метод возвращает предыдущее значение, установленное в заданной позиции.
Если значение index выходит за пределы допустимого диапазона, т.е.
(index < 0 || index >= size())
то будет сгенерировано исключение IndexOutOfBoundsException.
Приклад.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод set() - установить значение в отдельном элементе массива // 1. Создать коллекцию строк ArrayList<String> AL = new ArrayList<String>(); AL.add("a"); AL.add("b"); AL.add("c"); // 2. Вывести исходный массив с помощью итератора Iterator<String> it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) System.out.print(it.next()+" "); System.out.println(); // 3. Установить новое значение в элементе с индексом 1 String oldValue; oldValue = AL.set(1, "bbb"); // 4. Вывести предыдущую строку System.out.println("oldValue = " + oldValue); // 5. Вывести измененный массив System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); } }
Результат выполнения программы
AL => a b c oldValue = b AL => a bbb c
⇑
9. Метод sort(). Отсортировать элементы массива
С помощью метода sort() можно сортировать элементы массива. Общая форма объявления метода следующая
public void sort(Comparator<? super E> c);
здесь
- c – компаратор (условие), реализующий принцип сравнения каких-либо двух элементов массива. Компаратор используется в случае разработки собственного класса, объекты которого могут быть отсортированы по некоторому критерию. В этом случае класс должен реализовать интерфейс Comparator. В этом интерфейсе определен метод compare(), сравнивающий два элемента. Конкретно этот способ нужно переопределить и воплотить в этом классе и задать свой механизм сравнения.
Для стандартных типов-оболочек (Integer, Double, String и т.д.) реализован внутренний компаратор, сортирующий элементы в естественном порядке (от меньшего к большему или по алфавиту).
Для использования стандартного способа сортировки следует вызвать метод sort() с аргументом null
AL.sort(null);
здесь AL – массив сортируемых элементов.
Пример.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод sort() - сортировка в естественном порядке // 1. Создать массив строк ArrayList<String> AL = new ArrayList<String>(); AL.add("jklm"); AL.add("abcd"); AL.add("elsd"); AL.add("lkls"); AL.add("azsd"); // 2. Вывести исходный массив Iterator<String> it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) System.out.print(it.next()+" "); System.out.println(); // 3. Отсортировать элементы массива, метод sort() AL.sort(null); // 4. Вывести отсортированный массив System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); } }
Результат выполнения программы
AL => jklm abcd elsd lkls azsd AL => abcd azsd elsd jklm lkls
⇑
Связанные темы
- Класс ArrayList. Динамический массив. Общие сведения. Создание массива
- Методы, определяющие информацию об элементах массива. Методы get(), contains(), containsAll(), indexOf(), lastIndexOf(), iterator(), listIterator()
- Методы определяющие общие характеристики массива. Методы ensureCapacity(), isEmpty(), size(), trimToSize()
- Методы преобразующие массив в целом. Методы clone(), sublist(), toArray(), retainAll()
⇑