static int binarySearch(type[] a, type element);

где type один из семи примитивных типов (byte, short, int, long, char, float, double)

или тип Object.

Восемь методов сортируют часть массива, начиная от элемента с индексом from включительно до элемента с индексом to исключительно:

static int binarySearch(type[] a, int from, int to, type element);

Оставшиеся два метода поиска применяют настраиваемые типы и имеют более сложный вид:

static int binarySearch(T[] a, T element, Comparator c); static int binarySearch(T[] a, int from, int to, T element,

Comparator c);

Они отыскивает элемент element в массиве или его части, отсортированном в порядке, заданном объектом c.

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

Заполнение массива

Восемнадцать статических методов класса Arrays заполняют массив или часть массива указанным значением value:

static void fill(type[], type value);

static void fill(type[], int from, int to, type value);

где type-один из восьми примитивных типов или тип Object.

Копирование массива

Восемь методов класса Arrays, написанных для всех примитивных типов, обозначенных здесь словом type:

static type[] copyOf(type[] a, int newLength);

копируют массив a, возвращая ссылку на копию массива. Они обрезают массив a до длины newLength, если newLength меньше длины массива a, или дополняют массив нулями, если его длина меньше newLength.

Следующий метод использует настраиваемый тип:

static T[] copyOf(T[] a, int newLength);

Еще один метод копирования позволяет изменить тип массива:

static T[] copyOf(U[] a, int newLength, Class newType);

При несовместимости старого и нового типов возникает исключительная ситуация.

Часть массива, начиная от элемента с индексом from и заканчивая перед элементом с индексом to, можно скопировать одним из десяти методов copyOfRange (). Восемь из них написаны для примитивных типов. Они имеют вид:

static type[] copyOfRange(type[] a, int from, int to);

Индекс to может оказаться больше длины массива, в таком случае массив-копия будет дополнен нулями.

Девятый метод использует настраиваемый тип массива:

static T[] copyOfRange(T[] a, int newLength, int from, int to);

Десятый метод может изменить тип копируемого массива:

static T[] copyOfRange(U[] a, int from, int to, Class newType);

При несовместимости старого и нового типов возникает исключительная ситуация.

Сравнение массивов

Девять статических логических методов класса Arrays сравнивают массивы:

static boolean equals(type[] a1, type[] a2);

где type-один из восьми примитивных типов или тип Object.

Массивы считаются равными и возвращается true, если они имеют одинаковую длину, и равны все элементы массивов с одинаковыми индексами.

Еще один метод сравнения массивов:

static boolean deepEquals(Object[] a1, Object[] a2);

полезен для сравнения многомерных массивов, поскольку он сравнивает элементы массивов с любым количеством индексов.

Представление массива строкой

Девять статических методов класса Arrays преобразуют массив в строку:

static String toString(type[] a);

где type-один из восьми примитивных типов или тип Object.

В формируемой строке массив записывается в квадратных скобках, а его элементы перечисляются через запятую и пробел. Каждый элемент преобразуется в строку методом String.valueOf (type).

Еще один метод преобразования массива в строку:

static String deepToString(Object[] a);

применяется для преобразования многомерных массивов. Он рекурсивно просматривает их подмассивы с любым количеством индексов.

Получение хеш-кода массива

Девять статических методов класса Arrays вычисляют хеш-код массива:

static int hashCode(type[] a);

где type один из восьми примитивных типов или тип Object.

Сначала массив представляется списком типа List, а затем вычисляется хеш-код списка методом List.hashCode ().

Еще один метод:

static int deepHashCode(Object[] a);

применяется для вычисления хеш-кода многомерных массивов. Он просматривает их подмассивы с любым количеством индексов.

В листинге 7.1 приведен простой пример работы с некоторыми из методов класса

Arrays.

Листинг 7.1. Применение методов класса Arrays

import java.util.*; class ArraysTest{

public static void main(String[] args){

int[] a = {34, -45, 12, 67, -24, 45, 36, -56}; Arrays.sort(a);

for (int i: a)

System.out.print(a[i] + " ");

System.out.println();

Arrays.fill(a, Arrays.binarySearch(a, 12), a.length, 0);

for (int i: a)

System.out.print(a[i] + " ");

System.out.println();

}

}

Локальные установки

Перейти на страницу:

Все книги серии В подлиннике

Похожие книги