Arrays

Arrays — вспомогательный класс для работы с массивами.

  • Методы вызываются через имя класса: Arrays.имяМетода(...).
  • В таблицах ниже приведены типичные варианты для int[]. Для других примитивных типов (double[], char[] и т.п.) есть аналогичные методы.

Сортировка

Сигнатура Описание
void sort(int[] a) Сортирует весь массив a по возрастанию.
void sort(int[] a, int from, int to) Сортирует подмассив a[from] ... a[to - 1].

Особенности:

  • Сортировка — по возрастанию.
  • Во втором варианте сортируется только часть массива: элементы с индексами от from (включительно) до to (не включительно).

Пример:

int[] a = {5, 2, 9, 1};

Arrays.sort(a);   // a = [1, 2, 5, 9]

Поиск

Сигнатура Описание
int binarySearch(int[] a, int key) Бинарный поиск key в отсортированном массиве a.

Важно:

  • Массив a должен быть отсортирован по возрастанию.
  • Если элемент найден, возвращается его индекс.
  • Если не найден, возвращается отрицательное число.

Пример:

int[] a = {1, 3, 5, 7, 9};
int pos = Arrays.binarySearch(a, 5);   // pos = 2

Заполнение и копирование

Сигнатура Описание
void fill(int[] a, int value) Заполняет весь массив a значением value.
void fill(int[] a, int from, int to, int value) Заполняет элементы a[from] ... a[to - 1] значением value.
int[] copyOf(int[] a, int newLength) Копия массива a длины newLength.
int[] copyOfRange(int[] a, int from, int to) Копия подмассива a[from] ... a[to - 1].

Комментарии:

  • Если newLength больше длины a, «хвост» нового массива заполняется нулями.
  • Если newLength меньше длины a, лишние элементы отбрасываются.

Примеры:

int[] a = {1, 2, 3, 4, 5};

int[] b = Arrays.copyOf(a, 3);      // b = [1, 2, 3]
int[] c = Arrays.copyOf(a, 7);      // c = [1, 2, 3, 4, 5, 0, 0]

Arrays.fill(a, 0);                  // a = [0, 0, 0, 0, 0]

Сравнение и строковое представление

Сигнатура Описание
boolean equals(int[] a, int[] b) Сравнение массивов поэлементно.
String toString(int[] a) Строка с элементами массива a.

Особенности:

  • equals проверяет длину и каждый элемент: массивы равны, только если все элементы совпадают по порядку.
  • toString возвращает строку вида "[1, 2, 3]", удобно для отладочного вывода.

Пример:

int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
int[] c = {1, 3, 2};

boolean same1 = Arrays.equals(a, b);   // true
boolean same2 = Arrays.equals(a, c);   // false

System.out.println(Arrays.toString(a)); // [1, 2, 3]

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

Сортировка массива и вывод:

int n = in.nextInt();
int[] a = new int[n];

for (int i = 0; i < n; i++) {
    a[i] = in.nextInt();
}

Arrays.sort(a);

System.out.println(Arrays.toString(a));

Копирование первых k элементов:

int k = in.nextInt();
int[] prefix = Arrays.copyOf(a, k);

Поиск элемента в отсортированном массиве:

Arrays.sort(a);               // сначала сортируем
int key = in.nextInt();
int pos = Arrays.binarySearch(a, key);

if (pos >= 0) {
    System.out.println("Найден, индекс = " + pos);
} else {
    System.out.println("Не найден");
}

Полный API

Полный список методов и деталей реализации см. в официальной документации Java для класса java.util.Arrays (Java SE 11).