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 binarySearch(int[] a, int key) |
Бинарный поиск key в отсортированном массиве a. |
Важно:
- Массив
aдолжен быть отсортирован по возрастанию. - Если элемент найден, возвращается его индекс.
- Если не найден, возвращается отрицательное число.
Пример:
Заполнение и копирование
| Сигнатура | Описание |
|---|---|
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 элементов:
Поиск элемента в отсортированном массиве:
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).