Java Arrays

El array es una de las estructuras de datos importantes en todos los lenguajes de programación; por supuesto, los diferentes lenguajes tienen distintas implementaciones y manejos de los arrays.

Los arrays proporcionados en el lenguaje Java se utilizan para almacenar elementos del mismo tipo de tamaño fijo.

Puedes declarar una variable de array, como numbers

Este tutorial presentará la declaración, creación e inicialización de arrays en Java, y proporcionará el código correspondiente.


Declarar variables de array

Primero debes declarar la variable de array para poder usar el array en el programa. A continuación se muestra la sintaxis para declarar variables de array:

dataType[] arrayRefVar; //Método preferidoodataType arrayRefVar[]; //El efecto es el mismo, pero no es el método preferido

Nota:Se recomienda utilizardataType[] arrayRefVarel estilo de declaración para declarar variables de array. El estilo dataType arrayRefVar[] proviene del lenguaje C/C++, y se adoptó en Java para que los programadores de C/C++ puedan entender rápidamente el lenguaje Java.

Ejemplo

A continuación se muestran ejemplos de código de estas dos sintaxis:

double[] myList; //Método preferidoodouble myList[]; //El efecto es el mismo, pero no es el método preferido

Crear un array

El lenguaje Java utiliza el operador new para crear arrays. La sintaxis es la siguiente:

arrayRefVar = new dataType[arraySize];

La declaración de sintaxis anterior hace dos cosas:

  • Primero, crea un array usando dataType[arraySize].
  • Segundo, asigna la referencia del array recién creado a la variable arrayRefVar.

La declaración de la variable de array y la creación del array se pueden completar con una sola declaración, como se muestra a continuación:

dataType[] arrayRefVar = new dataType[arraySize];

Además, también puedes crear un array de la siguiente manera:

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

Los elementos de un array se acceden mediante índices. Los índices del array comienzan en 0, por lo que los valores de índice van de 0 a arrayRefVar.length-1.

Ejemplo

La siguiente declaración primero declara una variable de array myList, luego crea un array que contiene 10 elementos de tipo double, y asigna su referencia a la variable myList.

Código del archivo TestArray.java:

public class TestArray { public static void main(String[] args) { //Tamaño del array int size = 10; //Definir el array double[] myList = new double[size]; myList[0] = 5.6; myList[1] = 4.5; myList[2] = 3.3; myList[3] = 13.2; myList[4] = 4.0; myList[5] = 34.33; myList[6] = 34.0; myList[7] = 45.45; myList[8] = 99.993; myList[9] = 11123; //Calcular la suma de todos los elementos double total = 0; for (int i = 0; i < size; i++) { total += myList[i]; } System.out.println("La suma es:" + total); } }

El resultado del ejemplo anterior es:

总和为: 11367.373

La siguiente imagen representa el array myList. Aquí el array myList tiene 10 elementos double, y sus índices van de 0 a 9.

java数组结构说明


Procesar arrays

El tipo de los elementos del array y el tamaño del array son fijos, por lo que al manejar los elementos del array, normalmente usamos bucles básicos o el bucle For-Each.

Ejemplo

Este ejemplo muestra completamente cómo crear, inicializar y manipular arrays:

Código del archivo TestArray.java:

public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; //Imprimir todos los elementos del array for (int i = 0; i < myList.length; i++) { System.out.println(myList[i] + " "); } //Calcular la suma de todos los elementos double total = 0; for (int i = 0; i < myList.length; i++) { total += myList[i]; } System.out.println("Total is " + total); //Encontrar el elemento máximo 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); } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

1.9
2.9
3.4
3.5
Total is 11.7
Max is 3.5

Bucle For-Each

JDK 1.5 introdujo un nuevo tipo de bucle, llamado bucle For-Each o bucle mejorado, que puede recorrer un array sin usar índices.

El formato de sintaxis es el siguiente:

for(type element: array)
{
    System.out.println(element);
}

Ejemplo

Este ejemplo se usa para mostrar todos los elementos del array myList:

Código del archivo TestArray.java:

public class TestArray { public static void main(String[] args) { double[] myList = {1.9, 2.9, 3.4, 3.5}; //Imprimir todos los elementos del array for (double element: myList) { System.out.println(element); } } }

El resultado de compilar y ejecutar el ejemplo anterior es el siguiente:

1.9
2.9
3.4
3.5

Los arrays como parámetros de funciones

Un array se puede pasar como parámetro a un método.

Por ejemplo, el siguiente ejemplo es un método que imprime los elementos de un array int:

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

El siguiente ejemplo llama al método printArray para imprimir 3, 1, 2, 6, 4 y 2:

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

Los arrays como valor de retorno de funciones

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; }

En el ejemplo anterior, el array result se usa como valor de retorno de la función.


Arrays multidimensionales

Un array multidimensional puede considerarse como un array de arrays. Por ejemplo, un array bidimensional es un array unidimensional especial en el que cada elemento es un array unidimensional, por ejemplo:

String[][] str = new String[3][4];

Inicialización dinámica de arrays multidimensionales (con un array bidimensional como ejemplo)

1. Asignar espacio directamente para cada dimensión, el formato es el siguiente:

type[][] typeName = new type[typeLength1][typeLength2];

type puede ser un tipo de datos básico o un tipo de datos compuesto; typeLength1 y typeLength2 deben ser enteros positivos; typeLength1 es el número de filas y typeLength2 es el número de columnas.

Por ejemplo:

int[][] a = new int[2][3];

Análisis:

El array bidimensional a puede considerarse como un array de dos filas y tres columnas.

2. Comenzando desde la dimensión más alta, asignar espacio para cada dimensión, por ejemplo:

String[][] s = new String[2][]; s[0] = new String[2]; s[1] = new String[3]; s[0][0] = new String("Good"); s[0][1] = new String("Luck"); s[1][0] = new String("to"); s[1][1] = new String("you"); s[1][2] = new String("!");

Análisis:

s[0]=new String[2]ys[1]=new String[3]Es asignar espacio de referencia para la dimensión más alta, es decir, limitar la longitud máxima de datos que puede almacenar la dimensión más alta, y luego asignar espacio por separado para cada elemento del arrays0=new String("Good")y demás operaciones.

Referencia a arrays multidimensionales (con un array bidimensional como ejemplo)

Para cada elemento de un array bidimensional, la forma de referencia esarrayName[index1][index2], por ejemplo:

num[1][0];

La clase Arrays

La clase java.util.Arrays permite manipular arrays de manera conveniente; todos los métodos que proporciona son estáticos.

Tiene las siguientes funciones:

  • Asignar valores a un array: mediante el método fill.
  • Ordenar un array: mediante el método sort, en orden ascendente.
  • Comparar arrays: mediante el método equals se compara si los valores de los elementos de los arrays son iguales.
  • Buscar elementos en un array: mediante el método binarySearch se puede realizar una búsqueda binaria en un array ordenado.

Para una explicación detallada, consulte la siguiente tabla:

N.º Método y descripción
1 public static int binarySearch(Object[] a, Object key)
Busca un objeto de un valor dado (Byte, Int, double, etc.) en un array dado usando el algoritmo de búsqueda binaria. El array debe estar ordenado antes de la llamada. Si el valor buscado está incluido en el array, devuelve el índice de la clave de búsqueda; de lo contrario devuelve (-(punto de inserción) - 1).
2 public static boolean equals(long[] a, long[] a2)
Si dos arrays long especificados son mutuamenteiguales, devuelve true. Si dos arrays contienen el mismo número de elementos, y todos los pares de elementos correspondientes en los dos arrays son iguales, entonces se considera que los dos arrays son iguales. En otras palabras, si dos arrays contienen los mismos elementos en el mismo orden, entonces los dos arrays son iguales. El mismo método se aplica a todos los demás tipos de datos básicos (Byte, short, Int, etc.).
3 public static void fill(int[] a, int val)
Asigna el valor int especificado a cada elemento en el rango especificado del array int especificado. El mismo método se aplica a todos los demás tipos de datos básicos (Byte, short, Int, etc.).
4 public static void sort(Object[] a)
Ordena en orden ascendente el array de objetos especificado según el orden natural de sus elementos. El mismo método se aplica a todos los demás tipos de datos básicos (Byte, short, Int, etc.).

Ejercicios

Cuestionario de Java Arrays

Otras extensiones