Programación Orientada a Objetos: Arreglos en Java Mario Marcelo Berón Área de Metodologías, Programación y Desarrollo de Software May 12, 2011
Son estructuras lineales indexadas donde cada posición posee una dirección para el acceso al elemento. Los arreglos no son objetos no son creados por ninguna clase ni responden a mensajes. Los arreglos son de tipo referenciado, o sea una variable que identifica un arreglo contiene la dirección de memoria del arreglo. La dimensión del arreglo (su capacidad) puede ser definida en su declaración o posteriormente. Longitud se refiere al número de efectivo de elementos que tiene el arreglo en un momento dado. La longitud será siempre menor igual que la dimensión.
Definición La dimensión física y el tipo de sus elementos son generalmente definidos en su declaración. int [] vector= new int[100] También la dimensión puede ser definida después de su declaración. String [] nombres; nombres= new String[50]; También la dimensión puede ser definida en forma impĺıcita. int[] valores = { 12, 56, -6, 45, 56, 8 }; //dim=6 double[] notas = { 12.5, 15.6, 10.9, 15.2}; // dim=4
Declaraciones, Inicializaciones y Dimensión int lista[]; // estilo C int[] lista; // estilo JAVA int[] cantalumnos = new int[100]; double[] medias = new double[50]; byte[] mem = new byte[800*600]; String[] nomes = new String[20]; String[] alunos = { "Pedro", "Rita", "Ana" };
Logitud y Acceso a los Elementos // longitud int longitud = lista.length; int numalumnos = alumnos.length; // accesso int val = lista[0]; int num = lista[val*2]; String nombre = nombres[index]; out.println(lista[i]); out.println(nombres[i]); out.printf("val = %d%n", lista[i]);
Recorridos de Arreglos for(int i = 0; i < a.length; i++){.a[i]...} // por índice for(idtipo elem : IdArray) {...elem... } // for(each) Recorridos de Arreglos // Imprimir todos los elementos de un arreglo for(int i=0; i< lista.length; i++) out.println(lista[i]); for(int elem : lista) out.println(elem); //Sumatoria int suma = 0; for(int i=0; i< lista.length; i++) suma = suma + lista[i]; int suma1 = 0; for(int elem : lista) suma1 += elem;
Ingreso de Datos en Arreglos import java.util.scanner; public class Arreglo { public static void main (String [] args) { Scanner input= new Scanner(System.in); int valor = 0; System.out.print("Cuántos Enteros quiere Introducir?"); int n = input.nextint(); int []lista=new int[n]; for(int i = 0; i <= n-1; i++) lista[i] = input.nextint(); } }
Copia de Arreglos import java.util.scanner; public class Arreglo { public static void main (String [] args) { Scanner input= new Scanner(System.in); int valor = 0; System.out.print("Cuantos Enteros quiere Introducir? "); int n = input.nextint(); int []lista=new int[n]; int []lista2= new int[n]; for(int i = 0; i <= n-1; i++) lista[i] = input.nextint(); System.arraycopy(lista,0,lista2,0,lista.length); } } for(int l:lista2) System.out.println("Elemento en lista2:"+l);
Otras Operaciones sobre Arreglos //Devuelve el índice de la clave si existe sino < 0 int binarysearch(tipo[] a, tipo chave); //Igualdad de arreglos del mismo tipo boolean equals(tipo[] a, tipo[] b); //Inicializa un arraglo con el valor pasado como parámetro; void fill(tipo[] a, tipo val); //Ordena el arreglo de menor a mayor; void sort(tipo[] a); //Representación textual de los elementos; String tostring(tipo[] a);
Otras Operaciones sobre Arreglos import java.util.scanner; import java.util.arrays; public class Arreglo { public static void main (String [] args) {... System.arraycopy(lista,0,lista2,0,lista.length); for(int l:lista) System.out.println("Elemento en lista:"+l); Arrays.sort(lista2); for(int l:lista2) System.out.println("Elemento en lista2:"+l); Arrays.fill(lista,-1); for(int l:lista) System.out.println("Elemento en lista:"+l); }