Класс ArrayList. Методы преобразующие массив в целом
Содержание
- 1. Метод clone(). Получить копию массива
- 2. Метод subList(). Получить фрагмент массива на основе заданного массива
- 3. Метод toArray(). Конвертировать массив ArrayList в массив типа Object[]
- 4. Метод retainAll(). Сформировать новый массив, содержащий элементы заданной коллекции
- Связанные темы
Поиск на других ресурсах:
1. Метод clone(). Получить копию массива
Метод clone() выполняет копию из массива. Копия размещается в другом участке памяти. Согласно документации общая форма метода следующая
public Object clone();
Пример.
В примере формируется массив чисел. Затем с помощью метода clone() делается копия массива. В копии меняется один элемент. Под конец выводятся оба массива. После результата видно, что массивы имеют разные значения. Это означает, что они размещаются в разных участках памяти. Изменение значений в одном массиве не влияет на другой массив.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод clone() - сделать копию из коллекции // 1. Создать коллекцию из чисел ArrayList<Integer> AL = new ArrayList(); AL.add(1); AL.add(2); AL.add(3); AL.add(4); AL.add(5); System.out.println("AL => " + AL); // 2. Сделать копию из коллекции ArrayList<Integer> AL2 = (ArrayList<Integer>) AL.clone(); // 3. Вывести копию AL2 System.out.println("AL2 => " + AL2); // 4. Изменить копию AL2 AL2.set(2, 100); // Изменить другой элемент // 5. Вывести оригинал AL и копию AL2 System.out.println("After change AL2: "); System.out.println("AL = " + AL); System.out.println("AL2 = " + AL2); } }
Результат выполнения программы
AL => [1, 2, 3, 4, 5] AL2 => [1, 2, 3, 4, 5] After change AL2: AL = [1, 2, 3, 4, 5] AL2 = [1, 2, 100, 4, 5]
⇑
2. Метод subList().Получить фрагмент массива на основе заданного массива
Метод subList() возвращает подмассив на основе заданного массива. Общая форма объявления метода следующая
public List<E> subList(int fromIndex, int toIndex);
здесь
- fromIndex, toIndex – диапазон значений в исходном массиве, на основе которого формируется результирующий массив.
Для метода определены следующие особенности:
- значение fromIndex рассматривается как включенное. Значение toIndex рассматривается как исключенное. Например, если нужно получить первые 3 элемента массива, то fromIndex=0, toIndex=3;
- если fromIndex и toIndex равны между собой, то возвращается пустой массив;
- возвращаемый список является составной частью исходного списка. Это означает, что все изменения в результатах будут изменять исходный список. И, напротив, все изменения в исходном списке будут влиять на результирующий список;
- для результирующего списка определены все основные операции над списком, которые будут влиять на исходный список.
При неправильном использовании метода могут быть сгенерированы следующие исключения:
- IndexOutOfBoundsException – случай, когда значение fromIndex<0 или toIndex>size();
- IllegalArgumentException – случай, когда fromIndex>toIndex.
Пример.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод subList() - получить подмассив на основе заданного массива // 1. Создать массив чисел ArrayList<Integer> AL = new ArrayList<Integer>(); AL.add(10); AL.add(20); AL.add(30); AL.add(40); AL.add(50); AL.add(60); AL.add(70); // 2. Вывести исходный массив AL System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Получить подмассив List<Integer> AL2 = (List<Integer>) AL.subList(1, 4); // AL2 = { 20, 30, 40 } // 4. Вывести подмассив System.out.print("AL2 => "); for (int i=0; i<AL2.size(); i++) System.out.print(AL2.get(i) + " "); System.out.println(); // 5. Изменить элементы с индексами 2, 3 в исходном массиве, // будет изменяться и массив AL2 AL.set(2, 55); AL.set(3, 88); // AL2 => 20 555 888 // 6. Вывести подмассив System.out.print("AL2 => "); for (int i=0; i<AL2.size(); i++) System.out.print(AL2.get(i) + " "); System.out.println(); // 7. Очистить массив AL2 AL2.clear(); // 8. Вывести исходный массив System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); } }
Результат выполнения программы
AL => 10 20 30 40 50 60 70 AL2 => 20 30 40 AL2 => 20 55 88 AL => 10 50 60 70
⇑
3. Метод toArray(). Конвертировать массив ArrayList в массив типа Object[]
Метод toArray() конвертирует массив ArrayList в массив типа Object[]. Согласно документации объявления метода следующее
public Object[] toArray();
Пример.
В этом примере создается массив символов типа ArrayList. Затем этот массив преобразуется в массив типа Object[].
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод toArray() - получить подмассив на основе заданного массива // 1. Создать массив символов ArrayList<Character> AL = new ArrayList<Character>(); AL.add('0'); AL.add('1'); AL.add('2'); AL.add('3'); AL.add('4'); AL.add('5'); // 2. Вывести исходный массив AL System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Конвертировать в массив типа Object[] Object AC[] = AL.toArray(); // 4. Вывести массив AC System.out.print("AC => "); for (int i=0; i<AC.length; i++) System.out.print(AC[i] + " "); System.out.println(); } }
Результат выполнения программы
AL => 0 1 2 3 4 5 AC => 0 1 2 3 4 5
⇑
4. Метод retainAll(). Сформировать новый массив, содержащий элементы заданной коллекции
Метод retainAll() позволяет в заданном массиве сохранить только элементы, которые определены в заданной коллекции. Иными словами, метод удаляет из массива элементы, не содержащиеся в заданной коллекции. Согласно документации объявление метода имеет следующий вид
public boolean retainAll(Collection<?> c);
здесь
- c – коллекция элементов, которые необходимо сохранить в исходном массиве.
Если в исходном массиве произошли изменения, метод возвращает true.
Пример.
В примере выполняются следующие действия:
- создается исходный массив целых чисел AL;
- создается массив AL2, содержащий числа, которые нужно оставить в массиве AL;
- вызывается метод retainAll() для массива AL.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод retainAll() - сформировать новый массив на основе заданного // 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(5); AL.add(8); AL.add(4); // 2. Вывести исходную коллекцию целых чисел с помощью итератора Iterator<Integer> it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) System.out.print(it.next()+" "); System.out.println(); // 3. Сформировать коллекцию элементов, которые нужно оставить в массиве AL ArrayList<Integer> AL2 = new ArrayList<Integer>(); AL2.add(2); AL2.add(4); AL2.add(6); AL2.add(8); // 4. Вывести коллекцию AL2 System.out.print("AL2 => "); for (int i=0; i<AL2.size(); i++) System.out.print(AL2.get(i) + " "); System.out.println(); // 5. Вызвать метод retainAll() AL.retainAll(AL2); // 6. Вывести измененную коллекцию AL it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) { System.out.print(it.next() + " "); } } }
Результат выполнения программы
AL => 2 3 2 4 7 3 5 8 4 AL2 => 2 4 6 8 AL => 2 2 4 8 4
⇑
Связанные темы
- Класс ArrayList. Динамический массив. Общие сведения. Создание массива
- Методы изменяющие данные в массиве. Методы add(), addAll(), clear(), remove(), removeIf(), replaceAll(), set(), sort()
- Методы, определяющие информацию об элементах массива. Методы get(), contains(), containsAll(), indexOf(), lastIndexOf(), iterator(), listIterator()
- Методы определяющие общие характеристики массива. Методы ensureCapacity(), isEmpty(), size(), trimToSize()
⇑