En Java, los arrays (arreglos) son una forma de almacenar varios valores del mismo tipo en una sola estructura. A diferencia de otras estructuras de datos, los arrays tienen un tamaño fijo una vez creados. Los elementos se pueden asignar a un array o recuperar de él usando un índice. Los arrays de Java usan índices que empiezan en cero: el índice del primer elemento es 0, el del segundo es 1, etc.
Esta es la sintaxis estándar para inicializar un array:
type[] variableName = new type[size];
El type es el tipo de los elementos del array, que puede ser un tipo primitivo (por ejemplo, int) o una clase (por ejemplo, String).
El size es la cantidad de elementos que almacenará este array (y no se puede cambiar después).
Después de crear el array, los elementos se inicializan con sus valores predeterminados (normalmente 0, false o null).
// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];
Los arrays también se pueden definir con una notación abreviada que te permite crear el array y establecer su valor a la vez:
// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };
Como el compilador ahora puede saber cuántos elementos tendrá el array, se puede omitir la longitud.
Los elementos del array se pueden asignar y consultar usando una notación de índice entre corchetes:
// Assign second element by index
twoInts[1] = 8;
// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];
Acceder a un índice que está fuera de los índices válidos del array produce una IndexOutOfBoundsException.
Los arrays se pueden manipular llamando a los métodos o propiedades de una instancia de array, o usando los métodos estáticos definidos en la clase Arrays (que normalmente solo se usan en código genérico).
La propiedad length contiene la longitud de un array.
Se puede acceder a ella así:
int arrayLength = someArray.length;
Java también incluye una práctica clase de utilidad, java.util.Arrays, que tiene muchos métodos útiles relacionados con arrays (por ejemplo, Arrays.equals).
Java también admite los arrays multidimensionales como int[][] arr = new int[3][4];, que pueden ser muy útiles.
El hecho de que un array también sea una colección significa que, además de acceder a sus valores por índice, puedes recorrer todos sus valores con un bucle for-each:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for(char vowel: vowels) {
// Output the vowel
System.out.print(vowel);
}
// => aeiou
Si quieres tener más control sobre qué valores recorrer, puedes usar un bucle for:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for (int i = 0; i < 3; i++) {
// Output the vowel
System.out.print(vowels[i]);
}
// => aei
Eres un observador de aves entusiasta que lleva la cuenta de cuántas aves han visitado tu jardín en los últimos siete días.
Tienes seis tareas, todas relacionadas con el número de aves que visitaron tu jardín.
Para comparar, siempre tienes cerca una copia de los conteos de la semana pasada, que eran: 0, 2, 5, 3, 7, 8 y 4. Implementa el método BirdWatcher.getLastWeek() que devuelve los conteos de la semana pasada:
BirdWatcher.getLastWeek();
// => [0, 2, 5, 3, 7, 8, 4]
Implementa el método BirdWatcher.getToday() para devolver cuántas aves visitaron tu jardín hoy. Los conteos de aves están ordenados por día, donde el primer elemento es el conteo del día más antiguo y el último elemento es el conteo de hoy.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getToday();
// => 1
Implementa el método BirdWatcher.incrementTodaysCount() para incrementar el conteo de hoy:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.incrementTodaysCount();
birdCount.getToday();
// => 2
Implementa el método BirdWatcher.hasDayWithoutBirds() que devuelve true si hubo un día en el que cero aves visitaron el jardín; de lo contrario, devuelve false:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.hasDayWithoutBirds();
// => true
Implementa el método BirdWatcher.getCountForFirstDays() que devuelve el número de aves que han visitado tu jardín desde el inicio de la semana, pero limita el conteo al número especificado de días desde el principio de la semana.
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getCountForFirstDays(4);
// => 14
Algunos días son más ajetreados que otros. Un día ajetreado es aquel en el que cinco o más aves visitaron tu jardín.
Implementa el método BirdWatcher.getBusyDays() para devolver la cantidad de días ajetreados:
int[] birdsPerDay = { 2, 5, 0, 7, 4, 1 };
BirdWatcher birdCount = new BirdWatcher(birdsPerDay);
birdCount.getBusyDays();
// => 2
Regístrate en Exercism para aprender y dominar Java con 26 conceptos158 ejercicios y mentoría humana real, todo gratis.