Vous êtes sur la page 1sur 26

Arreglos

UNIDAD 2
M.S.C. Antonio Daniel Lpez Serrano

Introduccin

Definicin Un arreglo es un objeto, es una estructura de datos que contiene una coleccin de datos del mismo tipo. Los arreglos en Java son objetos que almacenan variables de un mismo tipo, los arreglos pueden almacenar tipos primitivos o referencia a objetos.

Introduccin

Definicin Una instancia de un arreglo que slo se declar y no ha sido explcitamente inicializada tiene el valor null. Si el arreglo ha sido al menos inicializado, los elementos del arreglo contendrn el valor default del tipo que almacenan.

Introduccin

Nosotros debemos conocer lo siguiente: Como declarar arreglos Como construir arreglos Como inicializar arreglos

Terminologa

Los arrays unidimensionales se conocen con el nombre de vectores. Los arrays bidimensionales se conocen con el nombre de matrices.

Declaracin

Para declarar un array, se utilizan corchetes para indicar que se trata de un array y no de una simple variable del tipo especificado.

La forma mas directa de construir un arreglo es con el uso de la palabra new seguida del tipo de arreglo, y dentro de los corchetes el numero de elementos que contendr ese arreglo:

Declaracin

Declaracin de arreglos de tipo primitivo int[] key; // corchetes antes del nombre(recomendado) int key []; // corchetes antes del nombre // espacios entre el nombre y los corchetes legales, pero malo Declaracin de arreglos de referencia a objetos Thread[] threads; // Recomendado Thread threads[]; // Legal pero menos leible Declaracin de arreglos Multidimensionales String[][][] occupantName; // recomendado String[] ManagerName []; // Legal

Creacin
Vector (array unidimensional): tipo identificador[]; o bien tipo[] identificador;

donde: tipo es el tipo de dato de los elementos del vector identificador es el identificador de la variable.

Creacin
Ejemplos: float[] notas = new float[ALUMNOS]; int[] temperaturas = new int[7]; int [] testScores; // Declara el arreglo de enteros testScores = new int[4]; // construye un arreglo y lo asigna a la variable testScores

Creacin

Matriz (array bidimensional): tipo identificador[][]; o bien tipo[][] identificador; Ejemplo int[][] temperaturas = new int[12][31];

Uso

Vector (array unidimensional): vector[ndice] En Java, el ndice de la primera componente de un vector es siempre 0.

El tamao del array puede obtenerse utilizando la propiedad vector.length Por tanto, el ndice de la ltima componente es: vector.length-1

Ejemplo de uso: float[] notas = new float[3];

Uso

Matriz (array bidimensional): matriz[ndice1][ndice2] Una matriz, en realidad, es un vector de vectores o arreglo de arreglos:
En Java, el ndice de la primera componente de un vector es siempre 0, por lo que matriz[0][0] ser el primer elemento de la matriz. El tamao del array puede obtenerse utilizando la propiedad array.length:
matriz.length nos da el nmero de filas matriz[0].length nos da el nmero de columnas

Por tanto, el ltimo elemento de la matriz es

matriz[matriz.length-1][matriz[0].length-1]

Ejemplo: int[][] myArray = new int[3][]; myArray[0] = new int[2]; myArray[0][0] = 6; myArray[0][1] = 7; myArray[1] = new int[3]; myArray[1][0] = 9; myArray[1][1] = 8; myArray[1][2] = 5;

Inicializacin en la declaracin

Podemos asignarle un valor inicial a los elementos de un array en la propia declaracin


int vector[] = {1, 2, 3, 5, 7}; int matriz[][] = { {1,2,3}, {4,5,6} };

El compilador deduce automticamente las dimensiones del array. El inicializar un arreglo implica poner cosas dentro de l. Esas cosas se les denomina elementos del arreglo, y estos a su vez pueden ser tipos primitivos o referencias a objetos.

Inicializando arreglos

Ejemplo:
Si tenemos el siguiente arreglo: Animal [] pets = new Animal[3]; La forma de inicializarlo es la siguiente: pets [0] = new Animal(); pets [1] = new Animal(); pets [2] = new Animal();

Inicializando arreglos bidimensionales

Para inicializar arreglos bidimensionales inicializar de la siguiente manera: int [] [] scores = new int [3] [] ; // Declare and create an array holding // three references to int arrays scores [0] = new int [4] ; // the first element in the scores array is an int // array of four int elements scores [1] = new int [6]; // the second element in the scores array is an // int array of six int elements scores [2] = new int [1]; // the third element in the scores array is an int // array of one int element

La forma de crear, instanciar e inicializar un arreglo es: //De tipos primitivos int x = 9; int[] dots = {6,x,8}; //De objetos Dog puppy = new Dog("Frodo"); Dog[] myDogs = {puppy, new Dog("Clover"), new Dog("Aiko")};

Asignacin de elementos de un arreglo

Para asignar un valor a un elemento hacemos uso del ndice del elemento a inicializar, el ndice del primer elemento del arreglo es 0 (cero). Un arreglo de tipos primitivos puede almacenar valores del tipo declarado o menores: int[] weightList = new int [5]; byte b = 4; char c = 'c'; short s = 7; list[0] = b; // OK, byte es ms pequeo que int list[1] = c; // OK, char es ms pequeo que int list[2] = s; // OK, short es ms pequeo que int

Asignacin de elementos de un arreglo

Un arreglo de referencias a objetos puede almacenar objetos y cualquier subclase de objetos del cual fue declarado el arreglo: class Car {} class Subaru extends Car {} class Ferrari extends Car {} ... Car [] myCars = {new Subaru(), new Car(), new Ferrari()}; Aqu claramente podemos observar que lo que en realidad se almacena en el arreglo son referencias a un tipo de objeto Car, y no se guardan objetos como tal dentro de un arreglo de referencia a objetos, lo mismo sucede para las variables de referencia

Biblioteca de Arreglos

La biblioteca de clases de Java incluye una clase auxiliar llamada java.util.Arrays que incluye como mtodos algunas de las tareas que se realizan ms a menudo con vectores:
Arrays.sort(v) ordena los elementos del vector. Arrays.equals(v1,v2) comprueba si dos vectores son iguales. Arrays.fill(v,val) rellena el vector v con el valor val. Arrays.toString(v) devuelve una cadena que representa el contenido del vector. Arrays.binarySearch(v, k) busca el valor k dentro del vector v (que previamente ha de estar ordenado).

Cadenas
M.S.C. Antonio Daniel Lpez Serrano

Cadenas de caracteres

Una cadena de caracteres no es ms que un vector de caracteres. La clase java.lang.String, que se emplea para representar cadenas de caracteres en Java, incluye distintos mtodos que nos facilitan algunas de las operaciones que se suelen realizar con cadenas de caracteres: El mtodo substring nos permite obtener una subcadena: String java=Java; String s = java.substring(0,3); System.out.println(s);

Cadenas de caracteres

El mtodo charAt(n) nos devuelve el carcter que se encuentra en la posicin n de la cadena: String java=Java; char c = java.charAt(2); System.out.println(c); // v El mtodo indexOf(s) nos devuelve la posicin de una subcadena dentro de la cadena: String java=Java; int p = java.indexOf(av); System.out.println(p);

Cadenas de caracteres

El mtodo replace(old,new) reemplaza subcadenas: String java=Java; java.replace(ava,ini); System.out.println(java); El mtodo equals(s) se usa para comprobar si dos cadenas son iguales: if (s.equals(Hola)) { }

Cadenas de caracteres

El mtodo startsWith(s) nos dice si una cadena empieza con un prefijo determinado: if (s.startsWith(get)) { } El mtodo endsWith(s) nos dice si una cadena termina con un sufijo determinado: if (s.endsWith(.html)) { } El mtodo length() devuelve la longitud de la cadena.