Массив Java, достаточно прочитать эту статью

Java

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

Кроме того, массивы также являются наиболее эффективным способом хранения последовательностей объектов и произвольного доступа к ним, но, к сожалению, массивы имеют фиксированную длину — например, при создании массива длиной 6 можно хранить только 6 элементов. хотите поставить 7-й элемент, это невозможно.

С улучшением аппаратных возможностей компьютера разработчики предпочитают использовать ArrayList вместо массива при хранении набора данных. Хотя ArrayList внутренне реализован через массивы, по сравнению с массивами его емкость может увеличиваться автоматически, и есть много функций, которых нет у массивов. Не используйте массивы, если можете, если вы не используете массивы для улучшения производительности.

01. Создайте массив

Дадим четкое определение массивов Java — массивы используются для храненияФиксированная длинаизтого же типаэлемент.

Пример выглядит следующим образом:

int[] ints = new int[3];
ints[0] = 1;
ints[1] = 2;
ints[2] = 3;

int ints1[] = new int[3];

int[] ints2 = { 1, 2, 3 };

int[] intsПо сравнению сint ints1[]является предпочтительным способом объявления,int ints1[]Этот стиль исходит из языка C/C++, поэтому программисты на C/C++ могут быстро понять язык Java.

Есть два способа создать массив, один из нихnewключевое слово, указав длину, а затем передавarray[index] = valueспособ присваивать значения; другой способ - передать{value1, value2, ...}способ напрямую создавать и назначать одновременно.

Ниже приведены наиболее распространенные приложения (строки-заполнители для дат):

private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd",
			"yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM" };

02. Будьте осторожны с длиной

При использовании списка и карты вы можете напрямую передатьsize()метод для получения фактического размера (длины) контейнера. Массивы также имеют ключевое словоlengthчтобы получить размер (длину), но смысл совсем в другом.lengthОн указывает только размер элементов, которые может содержать массив, а не фактический размер массива.

Пример выглядит следующим образом:

int[] ints = new int[3];
ints[0] = 1;
ints[1] = 2;

System.out.println(ints.length); // 输出3

Хотя фактическая длина целых чисел равна 2,ints.lengthДлина 3 - будьте осторожны.

03. Класс инструментов Массивы

Можно сказать, что разработчики Java были очень осторожны и специально разработали эксклюзивный класс инструментов для массивов——java.util.Arrays, есть несколько часто используемых методов, которые мы представим.

1) сортировать()

sort()Метод используется для сортировки массива, что требует, чтобы элементы массива реализовывали интерфейс Comparable. Если отсортированные элементы не являются строковыми или базовыми типами данных, вам необходимо активно реализовать интерфейс Comparable (базовые типы данных и сама строка реализовали интерфейс Comparable).

Пример выглядит следующим образом:

String[] strs = {"沉", "默","王", "二"};

Arrays.sort(strs);
System.out.println(Arrays.toString(strs));
// 输出[二, 沉, 王, 默]

sort()Результат сортировки по методу: [два, Шэнь, Ван, Мо].

2) бинарный поиск()

binarySearch()Метод используется для выполнения бинарного поиска в массиве (нижний индекс, где находится возвращаемое значение, или -1, если оно не найдено), и перед вызовом этого метода он должен быть отсортирован.

Пример выглядит следующим образом:

String[] strs = {"沉", "默","王", "二"};

Arrays.sort(strs);
System.out.println(Arrays.binarySearch(strs, "二"));
// 排序后的结果为[二, 沉, 王, 默]
// 二分查找的结果范围0

так какsort()Результат после сортировки по методу: [два, Шэнь, Ван, Мо], поэтомуArrays.binarySearch(strs, "二")Возвращает значение нижнего индекса 0.

3) какСписок()

asList()Метод используется для преобразования массива в список (ArrayList).Исходный код выглядит следующим образом:

public static <T> List<T> asList(T... a) {
    return new ArrayList<>(a);
}

Итак, как преобразовать список в массив? через списокtoArray()метод. Вы можете обратиться к следующему примеру, чтобы увидеть тонкие различия, вызванные различными способами определения массива.

String[] strs = {"沉", "默","王", "二"};

List<String> list = Arrays.asList(strs);
System.out.println(list);
// 输出[沉, 默, 王, 二]

String[] strs1 = new String[list.size()];
System.out.println(Arrays.toString(list.toArray(strs1)));
// 输出 [沉, 默, 王, 二]

String[] strs2 = new String[5];
System.out.println(Arrays.toString(list.toArray(strs2)));
// 输出 [沉, 默, 王, 二, null]

String[] strs3 = new String[1];
System.out.println(Arrays.toString(list.toArray(strs3)));
// 输出 [沉, 默, 王, 二]

String[] strs4 = {};
System.out.println(Arrays.toString(list.toArray(strs4)));
// 输出 [沉, 默, 王, 二]

Когда размер объявленного массива превышает размер списка,toArray()Метод дополнит преобразованный массив (null).

4) в строку()

toString()Метод используется для вывода массива в строковом формате ([value1, value2, value3, ...]формат), исходный код выглядит следующим образом:

public static String toString(Object[] a) {
    if (a == null)
        return "null";

    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(String.valueOf(a[i]));
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}

Предыдущий:Java String, прочтите это достаточно

Следующий:Начало работы с коллекциями Java

Поиск в WeChat »Тихий король 2"Общественный номер, подпишитесь и ответьте"бесплатное видео"Получите 500 ГБ высококачественных обучающих видео (по категориям).