Array Dinamico
Array Dinamico
Array Dinamico
Fundamentos de programacin
Equipo #2:
-
Array Dinmico
ndice
Introduccin................................................................................................................ 2
Definicin de un array dinmico................................................................................... 3
Vector......................................................................................................................... 4
Declaracin e inicializacin de una variable vector.....................................................4
Capacidad de un vector.......................................................................................... 4
Declarar, redimensionar y trabajar con arrays dinmicos.............................................5
Aadir, eliminar y consultar elementos de un vector...................................................6
Arraylist...................................................................................................................... 7
Declaracin y creacin de un arraylist.......................................................................7
Copiar un arraylist................................................................................................. 9
Recorrer un arraylist............................................................................................. 10
Mtodos de arraylist............................................................................................. 10
Arraylist como parmetro de un mtodo..................................................................11
Rendimiento y comparacin con otras estructuras....................................................12
Bucles for each................................................................................................... 13
Conclusin................................................................................................................ 15
Array Dinmico
Introduccin
Un arreglo en Java es un grupo de posiciones de memoria contiguas, todas las cuales
tienen el mismo nombre y el mismo tipo.
Es una estructura de datos que permite almacenar un conjunto de datos de un mismo
tipo. El tamao de los arrays se declara en un primer momento y no puede
cambiar luego durante la ejecucin del programa, como s puede hacerse en
otros lenguajes.
Los arreglos en Java son dinmicos, pero no extensibles, lo cual significa que deben
ser creados con el tamao que tendrn hasta el final de su vida para declarar, por
ejemplo, un arreglo de nmeros enteros utilizaremos la siguiente sentencia:
int[] arrint;
Para crear el arreglo deberemos recurrir al operador new:
arrint = new int[10];
La forma de declararlos es la siguiente:
Unidimensionales:
Bidimensionales:
Array Dinmico
Array Dinmico
Vector
Un objeto de tipo Vector contiene elementos que pueden ser accedidos por un
ndice y puede aumentar o disminuir su tamao dinmicamente en tiempo de ejecucin.
Capacidad de un vector
Cada vez que se aade un elemento a un vector, el sistema tiene que ubicar la
memoria necesaria para albergarlo. Para mejorar el rendimiento cuando se trabaja con
Array Dinmico
vectores que deben contener un elevado nmero de elementos, en al crear el objeto
vector se puede definir una capacidad inicial, y un incremento de capacidad del vector:
iInt capacidadinicial = 1000;
int capacidadincremento = 100;
Vector v = new Vector(capacidadinicial, capacidadincremento);
Adems, disponemos de los siguientes mtodos relacionados con la capacidad del
vector:
int capacity() devuelve la capacidad actual del vector (siempre sera mayor o
igual a su tamao actual)
Ensurecapacity(int capacidad) incrementa la capacidad del vector si es menor
que la que se indica (pero no la reduce si es mayor)
trimtosize() reduce la capacidad del vector para que coincida con el tamao del
vector
Array Dinmico
cuando utilizan gran cantidad de memoria) lo nico que tiene que hacer es asignar el
array dinmico a "nil":
Arraydinamico := nill; //libera arraydinamico de memoria
Array Dinmico
Arraylist
Es una clase que permite almacenar datos en memoria de forma similar a los
Arrays, con la ventaja de que el nmero de elementos que almacena, lo hace de forma
dinmica, es decir, que no es necesario declarar su tamao como pasa con los Arrays.
El primer objeto que se aade es el string lenguaje. El resto no son objetos. Son
datos de tipos bsicos pero el compilador los convierte automticamente en objetos de
su clase envolvente (clase contenedora o wrapper) antes de aadirlos al array.
Array Dinmico
Una alternativa a esta declaracin es indicar el tipo de objetos que contiene. En
este caso, el array solo podr contener objetos de ese tipo.
De forma general:
Arraylist<tipo> nombrearray = new arraylist<tipo>();
Tipo debe ser una clase. Indica el tipo de objetos que contendr el array.
No se pueden usar tipos primitivos. Para un tipo primitivo se debe utilizar su clase
envolvente.
Arraylist() construye un arraylist con capacidad cero por defecto, pero crecer
segn le vayamos aadiendo:
Arraylist al = new arraylist();
Arraylist(int capacidadinicial) construye un arraylist vaco con una capacidad
inicial especificada:
Arraylist al2 = new arraylist(5);
Para insertar un objeto al arraylist debemos llamar a sus mtodos con el
operador punto:
al.add("el manual de java");
al.add(new double(40.00));
clase envoltorio (wrapper class)
Para navegar por los elementos del arraylist se utiliza la clase iterator y
sus mtodos hasnext y next:
Iterator alit = al.iterator();
While (alit.hasnext()) {
System.out.println(alit.next() + " ");
}
Array Dinmico
Copiar un arraylist
El nombre de un arraylist contiene la referencia al arraylist, es decir, la direccin
de memoria donde se encuentra el arraylist, igual que sucede con los arrays estticos.
Si disponemos de un arraylist de enteros llamado ventas:
la instruccin:
Arraylist<integer> ventas1 = ventas;
No copia el array ventas en el nuevo array ventas1 sino que crea un alias:
Array Dinmico
Recorrer un arraylist
Podemos recorrerlo de forma clsica con un bucle for:
For(int i = 0;i<array.size();i++){
System.out.println(array.get(i));
}
Con un bucle foreach:
Si suponemos el array de enteros llamado numeros:
For(integer i: numeros){
System.out.println(i);
}
Si el array contiene objetos de tipos distintos o desconocemos el tipo:
For(object o: nombrearray){
System.out.println(o);
}
Utilizando un objeto iterator.
La ventaja de utilizar un iterador es que no necesitamos indicar el tipo de objetos
que contiene el array.
Iterator tiene como mtodos:
Hasnext: devuelve true si hay ms elementos en el array.
Next: devuelve el siguiente objeto contenido en el array.
Mtodos de arraylist
Algunos mtodos que proporciona arraylist son:
Mtodo
Descripcin
Size()
Add(x)
Add(posicin, x)
Get(posicion)
Remove(posicion)
10
Array Dinmico
posicin indicada. Devuelve el elemento eliminado.
Remove(x)
Clear()
objeto
x.
Set(posicin, x)
Contains(x)
Indexof(x)
Import java.util.*;
Public class arraylist4 {
Public static void main(string[] args) {
Arraylist<string> nombres = new arraylist<string>();
Nombres.add("ana");
Nombres.add("luisa");
Nombres.add("felipe");
Nombres.add("pablo");
System.out.println(nombres);
Nombres = invertir(nombres);
System.out.println(nombres);
}
11
Array Dinmico
Public static arraylist<string> invertir(arraylist<string> nombres) {
// crea una lista para el resultado del mtodo
Arraylist<string> resultado = new arraylist<string>();
// recorre la lista de nombres en orden inverso
For (int i = nombres.size() - 1; i >= 0; i--) {
// aade cada nombre al resultado
Resultado.add(nombres.get(i));
}
Return resultado;
}
}
Recorrer sus elementos en orden: (n) (tiempo lineal, buen uso del cach de
lectura)
un
elemento
al
final
del
arreglo:
(1)
(tiempo
12
Array Dinmico
Array Dinmico
while(it.hasNext())
System.out.println(it.next());
//recorrido usando foreach para sumar los elementos
double suma = 0;
for(Integer i: numeros){
suma = suma + i;
}
System.out.println("Suma: " + suma);
System.out.println("Media: " + suma/numeros.size());
}
}
14
Array Dinmico
Conclusin
Hemos llegado a la conclusin que los array (arreglos) dinmico como aquel que
es declarado con un nmero de elementos componente indefinido. Dicha indefinicin
se hace constar, al declarar el array en cabecera de mdulo o programa, dejando los
parntesis vacos, los arreglos pueden variar dependiendo sus dimensiones. Estos
pueden ser unidimensionales y bidimensionales; a los primeros se les conoce como
vectores y como su nombre lo indica poseen una dimensin o una lista de datos del
mismo tipo y los bidimensionales poseen dos dimensiones; se usan para representar
datos que pueden verse como una tabla con filas y columnas y se les conoce como
matrices.
La codificacin es algo tan simple como lo que realizamos a diario cuando
transformamos imgenes visuales o entidades conceptuales en palabras, oraciones,
textos y las comunicamos a aquellos que nos rodean. Conocemos a la codificacin
como cualquier operacin que implique la asignacin de un valor de smbolos o
caracteres a un determinado mensaje verbal con el propsito de transmitirlo a otros
individuos o entidades que compartan el cdigo.
15