Рубрики
Без рубрики

Массив Java

Массив Java, Массив строк Java, массив инициализации java, массив сортировки Java, объявление массива в java, длина массива java, добавление элемента, удаление элемента из массива.

Автор оригинала: Pankaj Kumar.

Массив Java – это контейнер, который может содержать фиксированное количество значений одного и того же типа. Значения могут быть примитивного типа, например int, short, byte, Или это может быть объект, такой как строка, целое число и т.д.

Массив Java

  • Несмотря на то, что массив может содержать примитивный тип и объект, сам массив является объектом в куче java, даже если он объявлен для хранения данных примитивного типа.
  • Нам нужно указать тип значений во время объявления массива.
  • Размер массива должен быть указан во время инициализации.
  • Java Arrays – это служебный класс, который предоставляет множество полезных методов для работы с массивами.
  • Мы можем получить доступ к элементам массива, используя целочисленный индекс.
  • Мы можем перемещаться по элементам массива, используя java для цикла или java forEach цикл.
  • Массив может быть как одномерным, так и многомерным.
  • Исключение ArrayIndexOutOfBoundsException возникает, когда мы пытаемся получить доступ к элементу массива, указав значение индекса, большее, чем размер массива.
  • Список реализаций, таких как ArrayList , поддерживается массивом. Существует несколько полезных методов для преобразования списка в массив и наоборот.
  • Существуют служебные методы для поиска элемента в массиве или для сортировки массива. Мы рассмотрим их на примерах программ в следующем разделе этого руководства.

Давайте рассмотрим некоторые важные моменты, касающиеся использования массивов в программах.

Объявление массива в Java

Массив можно объявить, указав тип данных, которые будет содержать массив (примитив или объект), за которым следуют квадратная скобка и имя переменной. Массив может быть одномерным или многомерным. Многомерные массивы на самом деле являются массивами массивов.

  1. Объявление массива данных примитивного типа (одномерного) :

  2. Объявление массива типа объекта (одномерного) :

  3. Объявление многомерного массива :

При объявлении массива рекомендуется ставить квадратные скобки сразу после объявленного типа.

Java инициализирует массив

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

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

  1. Инициализация одномерного массива :

  2. Инициализация многомерного массива :

  3. Инициализация массива с использованием синтаксиса быстрого доступа :

    Если вы заметили выше, двумерный массив int Arr2 не является симметричной матрицей. Это потому, что многомерный массив в java на самом деле является массивом массива. Для полного объяснения обратитесь к Двумерный массив в Java .

  4. Недопустимые способы инициализации массива : Вот несколько недопустимых способов инициализации массива.

  5. Не рекомендуемый способ инициализации массива : Вот некоторые другие варианты инициализации массивов в java, но они настоятельно не рекомендуются, чтобы избежать путаницы.

Доступ к Элементам Массива

  • Доступ к элементам массива можно получить по его индексу, и он всегда начинается с 0 (нуля).
  • Объект массива имеет общедоступную переменную length, которая определяет количество элементов в массиве.
  • Мы можем обрабатывать или обходить элементы массива, используя для или цикл foreach .

Давайте рассмотрим приведенный ниже пример программы для доступа к элементам массива на java.

package com.journaldev.examples;

public class JavaArrayExample {

	public static void main(String[] args) {

		// initializing an array		
		int[] integers = {1, 2, 3, 4, 5};
		String[] strings = {"one", "two", "three", "four", "five"};
		
		// using for loop to access elements
		System.out.println("Printing integer array using for loop :");
		for (int i = 0; i

Теперь давайте рассмотрим пример печати двумерного массива с использованием вложенных циклов for.

package com.journaldev.examples;

public class TwoDimensionalArrayExample {

	public static void main(String[] args) {

		// initializing an array
		int[][] integers = { { 1, 2, 3 }, { 4, 5, 6 } };

		for (int i = 0; i < integers.length; i++) {
			for (int j = 0; j < integers[i].length; j++) {
				System.out.print(integers[i][j]);
				System.out.print(" ");
			}
			System.out.println();
		}
	}
}

Что такое исключение ArrayIndexOutOfBoundsException?

Иногда мы пытаемся получить доступ к элементу вне размера массива; например, если у нас есть массив размером 10, и если мы попытаемся получить доступ к 11-му элементу, компилятор выдаст Исключение ArrayIndexOutOfBoundsException .

Давайте взглянем на приведенный ниже пример программы.

package com.journaldev.examples;

public class ArrayIndexOutOfBoundExample {

	public static void main(String[] args) {
		
		// declaring and initializing an array
		int[] a = new int[2];
		a[0] = 1;
		a[1] = 2;
		
		System.out.println(a[2]);
	}

}

Результатом вышеуказанной программы является:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
	at com.journaldev.examples.ArrayIndexOutOfBoundExample.main(ArrayIndexOutOfBoundExample.java:18)

Преобразование массива в список и наоборот

package com.journaldev.examples;

import java.util.Arrays;
import java.util.List;

public class ArrayConversionExample {

	public static void main(String[] args) {
		
		// initializing an array
		String[] strings = {"one", "two", "three", "four", "five"};
		
		//Converting array to list
		List list = Arrays.asList(strings);
		System.out.println("Array to List : "+list);
		
		//Converting list to array
		String[] strings2 = list.toArray(new String[list.size()]);
		System.out.println("List to Array :");
		for (String string : strings2) {
			System.out.println(string);
		}
	}
}

Вывод вышеуказанной программы является :

Array to List : [one, two, three, four, five]
List to Array :
one
two
three
four
five

Массив сортировки Java

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

package com.journaldev.examples;

import java.util.Arrays;

public class ArraysSortExample {

	public static void main(String[] args) {
		
		// initializing an array of Character
		char[] chars = {'B', 'D', 'C', 'A', 'E'};
		// sorting array of Character
		Arrays.sort(chars);
		System.out.print("Sorted Characters : ");
		for (char character : chars) {
			System.out.print(character+" ");
		}
		
		// initializing an array of Integer
		int[] integers = {5, 2, 1, 4, 3};
		// sorting array of Integer
		Arrays.sort(integers);
		System.out.print("\nSorted Integers : ");
		for (int i : integers) {
			System.out.print(i+" ");
		}
	}
}

Вывод вышеуказанной программы является :

Sorted Characters : A B C D E 
Sorted Integers : 1 2 3 4 5

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

java.util.Массивы предоставляет BinarySearch метод, который использует алгоритм двоичного поиска для поиска указанного значения из данного массива. Ниже приведена простая программа для поиска элемента в массиве с помощью двоичного поиска. Массив должен быть отсортирован до выполнения этого вызова. Если он не отсортирован, результаты не определены. Если массив содержит несколько элементов с указанным значением, нет никакой гарантии, какой из них будет найден.

package com.journaldev.examples;

import java.util.Arrays;

public class ArraysBinarySearchExample {

	public static void main(String[] args) {

		// Searching a value from array of integer
		int[] integers = { 5, 2, 1, 4, 3, 9, 6, 8, 7, 10 };
		int index = Arrays.binarySearch(integers, 2);
		if (index >= 0) {
			System.out.println("Element is found at the index :" + index);
		} else {
			System.out.println("Element is not found");
		}

		// Searching a value from array of integer with specific range
		int fromIndex = 2;
		int toIndex = 7;
		int index2 = Arrays.binarySearch(integers, fromIndex, toIndex, 9);
		if (index2 >= 0) {
			System.out.println("Element is found at the index :" + index2);
		} else {
			System.out.println("Element is not found");
		}

	}

}

Вывод вышеуказанной программы является :

Element is found at the index :1
Element is found at the index :5

Массив копирования Java

Класс объектов предоставляет метод clone () , и поскольку массив в java также является объектом, вы можете использовать этот метод для достижения полного копирования массива. Этот метод вам не подойдет, если вы хотите получить частичную копию массива. Ниже приведена простая программа для копирования массивов на java.

package com.journaldev.examples;

public class CopyingArrayExample {

	public static void main(String[] args) {
		
		// initialing an array
		int[] integers = {1, 2, 3, 4, 5};
		String[] strings = {"one", "two", "three", "four", "five"};
		
		//Copying Arrays
		int[] copyIntegers = integers.clone();
		System.out.println("Copy of Integer array :");
		for (int i : copyIntegers) {
			System.out.println(i);
		}
		
		String[] copyStrings = strings.clone();
		System.out.println("Copy of String array :");
		for (String string : copyStrings) {
			System.out.println(string);
		}
		
		//Copying two dimensional array
		int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 } };
		int[][] copyArr = arr.clone();
		System.out.println("Copy of two dimensional Integer array :");
		for (int i = 0; i < copyArr.length; i++) {
			for (int j = 0; j < copyArr[i].length; j++) {
				System.out.print(copyArr[i][j]);
				System.out.print(" ");
			}
			System.out.println();
		}
	}

}

Существует множество других способов копирования массива в java. Пожалуйста, обратитесь к массиву копирования java, чтобы узнать другие способы.

Добавление элементов в массив

В Java нет метода быстрого добавления элементов в массив. Но как программист, мы можем его написать. Здесь я предоставляю служебный метод, который мы можем использовать для добавления элементов в массив.

package com.journaldev.examples;

import java.util.Arrays;

public class ArrayAddElementExample {

	public static void main(String[] args) {
		
		//initializing one array
		int[] a1 = {1, 2, 3, 4, 5};
		//element to be added
		int i = 6;
		//initializing second array
		int[] a2 = new int[a1.length+1];
		//copy first array into second
		System.arraycopy(a1, 0, a2, 0, a1.length);
		
		//add element to second array
		a2[a2.length-1] = i;
		System.out.println("Old Array: "+Arrays.toString(a1));
		System.out.println("New Array: "+Arrays.toString(a2));
		
		
	}
}

Результатом работы вышеуказанной программы является:

Old Array: [1, 2, 3, 4, 5]
New Array: [1, 2, 3, 4, 5, 6]

Удалить элемент из массива

Ниже приведена простая программа для удаления элемента из массива.

package com.journaldev.examples;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class RemoveElementFromArrayExample {

	public static void main(String[] args) {
		
		// initializing array
		String[] strings = {"one", "two", "three", "four", "five"};
		System.out.println("Array Before Removing element : "+Arrays.toString(strings));
		List list = new ArrayList<>();
		String elementTobeRemoved = "four";
		for (String string : strings) {
			if (!string.equals(elementTobeRemoved)) {
				list.add(string);
			}
		}
		System.out.println("Array After Removing element : "+Arrays.toString(list.toArray(new String[list.size()])));
	}

}

Результатом работы вышеуказанной программы является:

Array Before Removing element : [one, two, three, four, five]
Array After Removing element : [one, two, three, five]

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

Ссылка: Документация Oracle