Java - Массивы

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

Вместо объявления отдельных переменных, таких как number0, number1, ... и number99, вы объявляете одну переменную массива, такую ​​как числа, и используете числа [0], числа [1] и ..., числа [99] для представления отдельные переменные.

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

Объявление переменных массива

Чтобы использовать массив в программе, вы должны объявить переменную для ссылки на массив, и вы должны указать тип массива, на который может ссылаться переменная. Вот синтаксис для объявления переменной массива -

Синтаксис

dataType[] arrayRefVar;   // preferred way.
or
dataType arrayRefVar[];  // works but not preferred way.

Note - Стиль dataType[] arrayRefVarявляется предпочтительным. СтильdataType arrayRefVar[] происходит от языка C / C ++ и был адаптирован в Java для программистов на C / C ++.

пример

Следующие фрагменты кода являются примерами этого синтаксиса:

double[] myList;   // preferred way.
or
double myList[];   // works but not preferred way.

Создание массивов

Вы можете создать массив, используя оператор new со следующим синтаксисом -

Синтаксис

arrayRefVar = new dataType[arraySize];

Приведенное выше утверждение делает две вещи:

  • Он создает массив с использованием new dataType [arraySize].

  • Он назначает ссылку на вновь созданный массив переменной arrayRefVar.

Объявление переменной массива, создание массива и присвоение ссылки на массив переменной можно объединить в один оператор, как показано ниже -

dataType[] arrayRefVar = new dataType[arraySize];

В качестве альтернативы вы можете создавать массивы следующим образом -

dataType[] arrayRefVar = {value0, value1, ..., valuek};

Доступ к элементам массива осуществляется через index. Индексы массива начинаются с 0; то есть они начинаются с 0 доarrayRefVar.length-1.

пример

Следующий оператор объявляет переменную массива myList, создает массив из 10 элементов типа double и назначает ссылку на myList:

double[] myList = new double[10];

На следующем рисунке представлен массив myList. Здесь myList содержит десять двойных значений, а индексы от 0 до 9.

Обработка массивов

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

пример

Вот полный пример, показывающий, как создавать, инициализировать и обрабатывать массивы:

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (int i = 0; i < myList.length; i++) {
         System.out.println(myList[i] + " ");
      }
     
      // Summing all elements
      double total = 0;
      for (int i = 0; i < myList.length; i++) {
         total += myList[i];
      }
      System.out.println("Total is " + total);
      
      // Finding the largest element
      double max = myList[0];
      for (int i = 1; i < myList.length; i++) {
         if (myList[i] > max) max = myList[i];
      }
      System.out.println("Max is " + max);  
   }
}

Это даст следующий результат -

Вывод

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

Циклы foreach

JDK 1.5 представил новый цикл for, известный как цикл foreach или расширенный цикл for, который позволяет вам последовательно перемещаться по всему массиву без использования индексной переменной.

пример

Следующий код отображает все элементы в массиве myList -

public class TestArray {

   public static void main(String[] args) {
      double[] myList = {1.9, 2.9, 3.4, 3.5};

      // Print all the array elements
      for (double element: myList) {
         System.out.println(element);
      }
   }
}

Это даст следующий результат -

Вывод

1.9
2.9
3.4
3.5

Передача массивов в методы

Так же, как вы можете передавать значения примитивных типов в методы, вы также можете передавать в методы массивы. Например, следующий метод отображает элементы вint массив -

пример

public static void printArray(int[] array) {
   for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
   }
}

Вы можете вызвать его, передав массив. Например, следующий оператор вызывает метод printArray для отображения 3, 1, 2, 6, 4 и 2 -

пример

printArray(new int[]{3, 1, 2, 6, 4, 2});

Возврат массива из метода

Метод также может возвращать массив. Например, следующий метод возвращает массив, который является разворотом другого массива:

пример

public static int[] reverse(int[] list) {
   int[] result = new int[list.length];

   for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
      result[j] = list[i];
   }
   return result;
}

Класс массивов

Класс java.util.Arrays содержит различные статические методы для сортировки и поиска массивов, сравнения массивов и заполнения элементов массива. Эти методы перегружены для всех примитивных типов.

Sr. No. Метод и описание
1

public static int binarySearch(Object[] a, Object key)

Выполняет поиск указанного значения в указанном массиве Object (Byte, Int, double и т. Д.), Используя алгоритм двоичного поиска. Перед выполнением этого вызова массив необходимо отсортировать. Возвращает индекс ключа поиска, если он содержится в списке; в противном случае возвращается (- (точка вставки + 1)).

2

public static boolean equals(long[] a, long[] a2)

Возвращает истину, если два указанных массива длинных значений равны друг другу. Два массива считаются равными, если оба массива содержат одинаковое количество элементов, и все соответствующие пары элементов в двух массивах равны. Это возвращает истину, если два массива равны. Тот же метод может использоваться для всех других примитивных типов данных (Byte, short, Int и т. Д.)

3

public static void fill(int[] a, int val)

Присваивает указанное значение int каждому элементу указанного массива целых чисел. Тот же метод может использоваться для всех других примитивных типов данных (Byte, short, Int и т. Д.)

4

public static void sort(Object[] a)

Сортирует указанный массив объектов в порядке возрастания в соответствии с естественным порядком его элементов. Тот же метод может использоваться для всех других примитивных типов данных (Byte, short, Int и т. Д.)