1 00:00:06,629 --> 00:00:12,910 Bienvenidos a este nuevo vídeo en el que vamos a explicar cómo funcionan los Arrays en Java. 2 00:00:14,589 --> 00:00:30,609 Los Arrays en Java, como en cualquier otro lenguaje, son una estructura de datos en la que podemos insertar datos de forma continuada, es decir, uno a continuación del otro. 3 00:00:31,109 --> 00:00:35,909 También podemos decir que se pueden insertar los datos de forma secuencial. 4 00:00:36,509 --> 00:00:45,450 En Java, como en cualquier otro lenguaje de programación, tenemos arrays que van a tener una sola dimensión, 5 00:00:45,450 --> 00:00:55,450 es decir, solo se van a poder guardar como un vector de valores, o también vamos a tener la posibilidad de guardar arrays en varias dimensiones. 6 00:00:58,200 --> 00:01:02,840 Vamos a empezar hablando de los arrays de una sola dimensión. 7 00:01:02,840 --> 00:01:09,519 Para poder tener arrays de una sola dimensión hay que definir un tipo de 8 00:01:09,519 --> 00:01:15,900 dato, un nombre que poner la sintaxis corchete delante del nombre del array y 9 00:01:15,900 --> 00:01:20,799 hay que reservar un espacio con el operador new para ese tipo de datos y 10 00:01:20,799 --> 00:01:27,939 para un número de elementos. El tipo de datos es importante porque no 11 00:01:27,939 --> 00:01:35,140 podemos guardar en un array elementos que no sean del mismo tipo por ejemplo si dentro del array 12 00:01:35,140 --> 00:01:41,560 quisiéramos meter números decimales pues significaría que en la declaración o en la 13 00:01:41,560 --> 00:01:47,560 definición del array todos los datos que vamos a poder meter ahí son decimales pero no pueden 14 00:01:47,560 --> 00:01:58,040 ser por ejemplo de tipo string vale no pueden estar mezclados los tipos de datos en pantalla 15 00:01:58,040 --> 00:02:04,799 tenemos un primer ejemplo en el que se define un array de 5 posiciones para números enteros. 16 00:02:05,159 --> 00:02:13,620 Como veis aquí, esta definición o esta declaración, mejor dicho, se ajusta a la definición que habíamos dicho anteriormente. 17 00:02:13,740 --> 00:02:19,740 El tipo de dato en este caso es int, aquí hay que poner la sintaxis de los corchetes, 18 00:02:19,740 --> 00:02:33,139 El nombre del array que en este caso es array números y a continuación se reserva un espacio de 5 números enteros y se le asignan a la variable array números. 19 00:02:34,060 --> 00:02:40,180 También tenemos un segundo ejemplo en el que tenemos la declaración de un array de cadenas. 20 00:02:40,180 --> 00:02:51,340 En este caso lo que hacemos es declarar un array de cadenas y reservar espacio para cinco tipos de datos de tipo string. 21 00:02:51,919 --> 00:03:05,280 En cada uno de estos dos arrays se podrán almacenar números o cadenas, pero de forma única, es decir, en el array de números solo números y en el array de cadenas solo cadenas. 22 00:03:05,280 --> 00:03:17,539 Para poder insertar valores en un array lo que tenemos que hacer es poner el nombre del array, indicarle la posición y asignarle un valor 23 00:03:17,539 --> 00:03:20,960 tal y como se ve en la sintaxis que aparece en pantalla 24 00:03:20,960 --> 00:03:31,180 Hay que tener en cuenta que la posición siempre va a ir desde 0 hasta el número de elementos menos 1 25 00:03:31,180 --> 00:03:40,620 Por ejemplo, en el caso anterior que habíamos declarado un array con cinco elementos, las posiciones del array tienen que estar entre 0 y 4. 26 00:03:41,060 --> 00:03:54,360 Al final serán cinco elementos igualmente, pero estarán indexados o indizados de forma que el primer elemento estará en el índice con orden 0 y el último estará en el índice con orden 4. 27 00:03:54,360 --> 00:04:06,340 Aquí se muestra en la pantalla una imagen de los índices que corresponden a un array de 5 posiciones 28 00:04:06,340 --> 00:04:12,520 Vemos que en el array en la primera fila aparecen los índices del 0 al 4 29 00:04:12,520 --> 00:04:16,980 y abajo los valores que corresponden a cada uno de esos índices 30 00:04:16,980 --> 00:04:23,389 Vamos a ver ejemplos de inserción de valores en el array 31 00:04:23,389 --> 00:04:35,110 En el código que aparece en pantalla está declarado un array de números que tiene reservado cinco números de tipo entero. 32 00:04:35,529 --> 00:04:44,290 Vamos a tener un valor donde vamos a ir modificando el valor que se va a ir insertando dentro de este array números. 33 00:04:44,290 --> 00:04:51,389 el valor se inicializa a 10 unidades y a continuación con un bucle for 34 00:04:51,389 --> 00:04:57,470 lo que hacemos es que desde que el índice vale 0 hasta que el índice sea menor de 5 35 00:04:57,470 --> 00:05:04,149 se va a ejecutar este bucle, cuando el índice valga 5 pues el incremento este 36 00:05:04,149 --> 00:05:10,970 dejará de funcionar y el bucle se romperá, por lo tanto aquí vamos a estar metiendo valores 37 00:05:10,970 --> 00:05:15,629 siempre y cuando el índice esté entre 0 y 4 38 00:05:15,629 --> 00:05:18,470 ya que el valor del 5 nunca va a ser alcanzado 39 00:05:18,470 --> 00:05:22,769 el valor de este número se va a ir incrementando de 10 en 10 40 00:05:22,769 --> 00:05:25,649 así que el valor este inicialmente valdrá 10 41 00:05:25,649 --> 00:05:29,649 después valdrá 20, 30 y así sucesivamente 42 00:05:29,649 --> 00:05:34,949 en la parte inferior del código aparece 43 00:05:34,949 --> 00:05:40,389 el array con los índices correspondientes 44 00:05:40,389 --> 00:05:46,310 y los valores que hemos ido cargando en sus debidas posiciones 45 00:05:46,310 --> 00:05:53,420 vamos a ver otro ejemplo de la carga de un array de string 46 00:05:53,420 --> 00:05:58,160 en este caso la vamos a cargar de forma manual en vez de con un bucle 47 00:05:58,160 --> 00:06:01,939 en el caso anterior usábamos un bucle para automatizar la carga 48 00:06:01,939 --> 00:06:07,220 y sin embargo en este caso lo que vamos a hacer es hacer la carga manualmente 49 00:06:07,220 --> 00:06:14,120 en este caso se asigna la posición 0 el valor de Lola a la posición 1 el valor de Juan 50 00:06:14,120 --> 00:06:22,220 en el caso del índice 2 Ana, en el caso del índice 3 José y en el caso del índice 4 Rosa 51 00:06:22,220 --> 00:06:27,240 como vemos son 5 elementos pero tienen que estar indexados como hemos dicho al principio 52 00:06:27,240 --> 00:06:30,360 desde el 0 hasta el número de elementos menos 1 53 00:06:30,360 --> 00:06:35,379 como el número de elementos es 5 el número de elementos menos 1 será 4 54 00:06:35,379 --> 00:06:42,819 Una vez que esto esté cargado en memoria pues tendremos también los mismos índices para la array de nombres 55 00:06:42,819 --> 00:06:47,959 pero en este caso como el soporte para este tipo de datos es string 56 00:06:47,959 --> 00:06:53,680 pues en vez de números en este caso sí que puede contener cadenas 57 00:06:53,680 --> 00:06:58,720 Aquí vemos dos ejemplos de arrays que contienen datos diferentes 58 00:06:58,720 --> 00:07:05,480 pero, sin embargo, todos los datos de cada uno de los arrays tienen que ser del mismo tipo. 59 00:07:07,860 --> 00:07:12,240 ¿Cómo se extraen los valores del array? Es decir, una vez que ya los tenemos cargados, 60 00:07:12,899 --> 00:07:16,139 pues es la misma operación de inserción pero a la inversa. 61 00:07:17,180 --> 00:07:23,199 Tendremos un valor donde se descarga el elemento que esté en la posición del array. 62 00:07:24,579 --> 00:07:28,160 Hay que tener en cuenta lo mismo que teníamos en cuenta hasta ahora, 63 00:07:28,160 --> 00:07:36,379 es decir que las posiciones del array estén entre 0 y 4 si el número de elementos es igual a 5 64 00:07:36,379 --> 00:07:42,600 obviamente esto si se hace para la carga se tiene que respetar también para la descarga 65 00:07:42,600 --> 00:07:53,560 aquí se muestra un ejemplo completo de carga y descarga del array de números 66 00:07:53,560 --> 00:07:59,379 aquí tendríamos el programa completo donde se hace la declaración del array 67 00:07:59,379 --> 00:08:05,160 la carga automática que ya hemos visto anteriormente y la descarga automática 68 00:08:05,160 --> 00:08:11,500 donde vamos a mostrar los valores que también se hace de forma automática 69 00:08:11,500 --> 00:08:17,420 con un bucle igual que el de carga pero en este caso lo que hacemos es la operación inversa 70 00:08:17,420 --> 00:08:23,579 si os fijáis aquí en la posición índice se mete un valor y aquí lo que se hace es que el valor 71 00:08:23,579 --> 00:08:35,919 toma el valor, valga la redundancia, de esa posición del índice donde está almacenado el número 72 00:08:35,919 --> 00:08:38,600 y posteriormente se pinta por pantalla. 73 00:08:39,940 --> 00:08:46,000 En esta ocasión, aquí aparece el contenido del array en memoria 74 00:08:46,000 --> 00:08:49,399 y aquí aparece la salida del array por pantalla. 75 00:08:49,399 --> 00:09:07,669 Del mismo modo, podemos hacer un ejemplo con el array de string. En el array de string tenemos la declaración, la carga manual y después la descarga que la vamos a hacer mediante un bucle, igual que hemos hecho el anterior. 76 00:09:07,669 --> 00:09:23,070 En este caso la dinámica es la misma, lo único es que como veis en lugar de almacenarse en el Array sus posiciones correspondientes números pues se almacenan nombres así que la salida por pantalla serán esos nombres. 77 00:09:23,070 --> 00:09:31,190 Al hablar en Java de arrays de varias dimensiones 78 00:09:31,190 --> 00:09:35,149 podemos poner las dimensiones que necesitemos 79 00:09:35,149 --> 00:09:38,149 pero vamos a hacer un ejemplo con dos dimensiones 80 00:09:38,149 --> 00:09:41,490 porque hacerlo para tres, cuatro y más dimensiones 81 00:09:41,490 --> 00:09:43,370 pues serían exactamente lo mismo 82 00:09:43,370 --> 00:09:47,830 En el caso de que tengamos un array con dos dimensiones 83 00:09:47,830 --> 00:09:50,629 pues veis que la sintaxis es muy similar 84 00:09:50,629 --> 00:09:52,429 tenemos el tipo de dato 85 00:09:52,429 --> 00:09:55,870 en vez de tener un solo corchete tendríamos dos 86 00:09:55,870 --> 00:09:59,690 el nombre del array, se asigna el tipo de dato 87 00:09:59,690 --> 00:10:05,169 y después los elementos por fila y elementos por columna que queremos asignar 88 00:10:05,169 --> 00:10:10,649 aquí por ejemplo aparece un array que se llama números 89 00:10:10,649 --> 00:10:16,590 que va a tener dos dimensiones y que va a tener tres filas por cinco columnas 90 00:10:16,590 --> 00:10:19,710 es decir, en total tendremos tres por cinco, quince elementos 91 00:10:19,710 --> 00:10:24,629 pero estarán distribuidos de esa forma, en cada fila tendremos 5 elementos 92 00:10:24,629 --> 00:10:29,730 como tenemos 3 filas y cada fila tiene 5 columnas pues en total hay 15 elementos 93 00:10:29,730 --> 00:10:35,769 hay que tener en cuenta también que los índices siguen funcionando igual 94 00:10:35,769 --> 00:10:44,710 es decir, el índice para las filas aquí será de 0 a 2 y el índice de las columnas será de 0 a 4 95 00:10:44,710 --> 00:10:57,259 A continuación se muestra cómo está esta declaración y cómo se cargarían los valores en memoria 96 00:10:57,259 --> 00:11:02,259 Aquí se muestran las cuatro columnas 97 00:11:02,259 --> 00:11:08,220 Aquí pone cuatro columnas pero realmente son cinco columnas 98 00:11:08,220 --> 00:11:10,500 La 0, la 1, la 2, la 3 y la 4 99 00:11:10,500 --> 00:11:12,840 Y aquí son las tres filas 100 00:11:12,840 --> 00:11:17,700 De modo que la intersección de cada fila con cada columna contendrá un valor 101 00:11:17,700 --> 00:11:32,299 Lo normal es que rellenemos por filas, aunque podéis rellenar en el orden que queráis, pero tener en cuenta que siempre el primer dígito que pongáis al hacer referencia al array está referenciando la fila. 102 00:11:34,480 --> 00:11:41,419 Vamos a ver un ejemplo de una inserción y extracción de valores en el array. 103 00:11:41,419 --> 00:11:44,879 si veis aquí está la declaración del array 104 00:11:44,879 --> 00:11:50,559 aquí tenemos un valor y lo que vamos a hacer es la carga del array 105 00:11:50,559 --> 00:11:54,059 si os fijáis una cosa interesante en la carga del array 106 00:11:54,059 --> 00:11:58,799 aquí hemos declarado unas variables que se llaman fila y columna 107 00:11:58,799 --> 00:12:05,440 si os fijáis la fila va de 0 a 2 porque nunca va a alcanzar el valor 3 108 00:12:05,440 --> 00:12:09,980 y la columna va a ir de 0 a 4 ya que nunca va a alcanzar el valor 5 109 00:12:09,980 --> 00:12:16,480 estos bucles están anidados porque cuando estamos rellenando los valores 110 00:12:16,480 --> 00:12:20,159 lo que tenemos que hacer es completar la primera fila 111 00:12:20,159 --> 00:12:24,399 es decir, para la fila 0 tenemos que rellenar las columnas del 0 a la 4 112 00:12:24,399 --> 00:12:27,940 para la fila 1 hay que rellenar las columnas del 0 a la 4 113 00:12:27,940 --> 00:12:31,120 y para la fila 2 hay que rellenar los valores del 0 a la 4 114 00:12:31,120 --> 00:12:36,139 en total son 15 valores, pero necesitamos rellenarlos 115 00:12:36,139 --> 00:12:40,340 si lo hacemos de forma automática con un bucle anidado 116 00:12:40,340 --> 00:12:44,220 para que una de las variables nos vaya apuntando a la fila 117 00:12:44,220 --> 00:12:47,440 y la otra variable nos vaya apuntando a la columna 118 00:12:47,440 --> 00:12:55,120 la forma de extraer la información es también con un bucle 119 00:12:55,120 --> 00:13:00,139 y la salida por pantalla es la que vemos aquí 120 00:13:00,139 --> 00:13:08,659 Aquí nos pone el número 00 que es el 1, el 01 es el 2, el 3, el 4 y el 5. 121 00:13:08,980 --> 00:13:18,379 Veis que el valor se incrementa de 1 en 1 y por eso toda la fila 0 se va cargando el 1, el 2, el 3, el 4 y el 5. 122 00:13:18,740 --> 00:13:28,480 Cuando pasa de esta fila el número 6 ya correspondería a la fila 1 y el número 11 ya correspondería a la fila 2. 123 00:13:28,480 --> 00:13:36,600 por último si vemos el contenido de este array en memoria 124 00:13:36,600 --> 00:13:42,879 pues tendría esta forma, en la posición 00 se guarda el 1 125 00:13:42,879 --> 00:13:47,919 en la 01 se guarda el 2, en la 02 se guarda el 3 y así sucesivamente 126 00:13:47,919 --> 00:13:53,500 de modo que en la última posición que sería la 24 se guarda el número 15 127 00:13:53,500 --> 00:13:59,259 Bueno, dejamos este vídeo aquí y vamos a ver un ejemplo