Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java Profesor: Jorge Escalona / Tobías Bolívar Email: [email protected] / [email protected] Página Web: http://estructuradatos.tripod.com Estucturas de Datos Página 1 Unidad II: Tratamiento de arreglos y cadenas en Java Qué es un Arreglo? Un arreglo (matriz, vector, lista) es un tipo especial de objeto compuesto por una colección de elementos del mismo tipo de datos que se almacenan consecutivamente en memoria. Ej. lista[0] lista[1] lista -- nombre [i] -- índice lista[2] lista[3] lista[4] lista[5] Estucturas de Datos Página 2 Propiedades de Arreglos • • • • Los arreglos son objetos Son creados dinámicamente (en run time) Pueden ser asignados a variables de tipo Object Cualquier método de la clase Object puede ser invocado en un arreglo • • • Un objeto arreglo contiene una secuencia de variables del mismo tipo Las variables son llamadas los componentes del arreglo Si el tipo del componente es T, entonces el arreglo en sí mismo es de tipo T[] • • • • • El tipo de componente puede ser tipo arreglo (arreglo de arreglos) El tipo de elemento puede ser tanto un tipo primitivo o un objeto (referencia) La longitud (length) de un arreglo es su número de componentes La longitud de un arreglo es definida cuando el arreglo es creado y no puede ser cambiado. La longitud del arreglo puede ser accesada como una instancia de variable declarada como public final Los arreglos deben ser indexados por variables enteras en el rango 0.. length -1 Un ArrayIndexOutBoundException es generada si es violada la regla anterior. Variables de tipo short, byte o char pueden ser usadas como índices. • • • Estucturas de Datos Página 3 Unidad II: Tratamiento de arreglos y cadenas en Java Arreglos Lineales o Unidimensionales Estos arreglos constituyen una lista de variables relacionadas. La forma de acceso a cada uno de sus diferentes valores, es usando acompañando al nombre de la variable más un índice: nombreArreglo [índice]. Los índices están en el rango de 0 a tamaño-1. Declaración: tipoDato[] nombreArreglo; o tipoDato nombreArreglo []; Creación: NombreArreglo = new tipoDato[n]; Ejemplo: int lista[]; lista= new int[10]; Estucturas de Datos Página 4 Unidad II: Tratamiento de arreglos y cadenas en Java Arreglos Lineales o Unidimensionales Inicialización tipoDato nombreArreglo[]={valor1,valor2,…,valorN}; //Este caso no requiere el uso de new Ejemplo: double [] lista = {1.5,2.45,3.15} Recorrido, Inserción y Eliminación Observe el siguiente ejemplo: Estucturas de Datos Página 5 Unidad II: Tratamiento de arreglos y cadenas en Java Arreglos Lineales o Unidimensionales public class Vectores { public static void main(String [] args) { int elementos [] = new int [10]; int n_elem; n_elem =agregarElemVector(elementos,11,n_elem); n_elem =agregarElemVector(elementos,5,n_elem); n_elem =agregarElemVector(elementos,8,n_elem); mostrarVector(elementos, n_elem); n_elem =elimElemVector(elementos,n_elem); mostrarVector(elementos, n_elem); System.out.println(“La media del Vector es: ”+ media(elementos, n_elem)); } Estucturas de Datos Página 6 Unidad II: Tratamiento de arreglos y cadenas en Java Arreglos Lineales o Unidimensionales public void mostrarVector (int datos[], int n ) { //Se recorre el vector para mostrar sus datos int i; For (i=0; i< n; i++) System.out.println(datos[i]); } public int agregarElemVector (int datos[], int elem, int n ) { //Agrega un elemento al final del vector if (n<datos.length) datos[++n]= elem; return n; } Estucturas de Datos Página 7 Unidad II: Tratamiento de arreglos y cadenas en Java Arreglos Lineales o Unidimensionales public int elimElemVector (int datos[], int n ) { //Elimina el ultimo elemento del vector if (n>=0) n--; return n; } public float media (int datos[], int n ) { //Se recorre el vector para calcular la media de sus datos int i; int suma = 0; For (i=0; i< n; i++) suma+=datos[i]); return suma/n; } } Estucturas de Datos Página 8 Unidad II: Tratamiento de arreglos y cadenas en Java Arreglos Multidimensionales Estos arreglos están formados por dos o más índices. Los ejemplos más comunes son los arreglos bidimensionales conocidos como tablas o matrices. Declaración: tipoDato nombreArreglo[][]; Creación: NombreArreglo = new tipoDato[n][m]; Ejemplo: int matriz[][]; matriz= new int[10][5]; Estucturas de Datos Página 9 Unidad II: Tratamiento de arreglos y cadenas en Java Operaciones con Cadenas Las cadenas o String constituyen una de las clases más frecuentemente utilizada en los programas de Java. Por ser un objeto, las cadenas presentan una serie de propiedades y comportamientos que se explicarán a continuación. En Java las cadenas son inalterables. Declaración: String nombreCadena; Ejemplo: Creación: String nombre; nombreCadena = “<valor>”; nombre= “Roberto”; o nombreCadena = new String (“<valor>”); o nombre= new String (“Roberto”); o nombreCadena = new String (otraCadena); Estucturas de Datos Página 10 Unidad II: Tratamiento de arreglos y cadenas en Java Operaciones con Cadenas Métodos: boolean equal (String str) Devuelve true si la cadena invocada contiene la misma secuencia de caracteres que str. int length() Obtiene la longitud de una cadena. char charAt (int index) Obtiene el carácter que se encuentra en una posición determinada de la cadena por el índice especificado por index. int compareTo (String str) Retorna un valor menor que 0 si la cadena invocada es menor que str, y un valor mayor a 0 si la cadena invocada es mayor que str, y 0 si las cadenas son iguales. int indexOf (String str) Busca en la cadena invocada la subcadena especificada por str. Regresa el índice de la primera correspondencia o -1 en caso de falla. int lastIndexOf (String str) Busca en la cadena invocada la subcadena especificada por str. Regresa el índice de la última correspondencia o -1 en caso de falla. Estucturas de Datos Página 11 Unidad II: Tratamiento de arreglos y cadenas en Java Operaciones con Cadenas Métodos: String concat (String str) Retorna una cadena que es resultado de la concatenación de la cadena invocada con la cadena str. String substring(int inicio, [int Extrae una subcadena de la cadena invocada. Si se especifica un parámetro, el fin]) método devuelve una nueva cadena que comienza donde indica inicio y se extiende hasta el fina de las misma. Si son dos, la nueva cadena estará formada por los caracteres existentes en la cadena invocada entre la posición inicio y fin, ambos inclusive char[] toCharArray () Devuelve un arreglo de caracteres creado a partir del objeto String. String replace (char oldChar, Devuelve una cadena resultante de reemplazar todas las apariciones de oldChar char newChar) con el newChar. String trim () Elimina los espacios en blanco que pudieran existir al principio o al final de una cadena. String toLowerCase () Convierte a minúscula las mayúsculas de la cadena invocada Estucturas de Datos Página 12 Unidad II: Tratamiento de arreglos y cadenas en Java Operaciones con Cadenas Métodos: String toUpperCase () Convierte a mayúsculas las minúsculas de la cadena invocada. String valueOf( tipoDato Arg) Crean cadenas a partir del correspodiente parámetro y devuelven dicha cadenas. El argumento de este método puede ser: boolean, char, char[], double, float, int, long, object. Estucturas de Datos Página 13