Está en la página 1de 10

ArrayList

1. Definicin
La biblioteca de Java proporciona una clase genrica ArrayList definida en el paquete java.util que facilita la creacin y manipulacin de arreglos unidimensionales o listas [1]. Para definir una coleccin ArrayList, la sintaxis es la siguiente: ArrayList nombre = new ArrayList(); en donde nombre es un identificador que nombra la lista. Los elementos que se almacenan en la lista son objetos tipo Object. El nmero de elementos es dinmico (a diferencia de un Array, en donde el nmero de elementos es fijo) en el sentido de que aumenta o disminuye su tamao segn sea el caso. Ejemplo: ArrayList lista = new ArrayList(); Un ArrayList tambin se puede definir de la siguiente manera: ArrayList<tipo> nombre = new ArrayList<tipo>();

en donde tipo indica el tipo de los elementos de la lista, el cual puede ser cualquier tipo referenciado. Para ambos casos, el nmero de elementos de la lista ser inicialmente cero. Ejemplo:

ArrayList<Integer> lista = new ArrayList<Integer>();

2. Mtodos
La clase ArrayList proporciona mtodos para acceder a los elementos de lista, insertar nuevos elementos, eliminar elementos, obtener el nmero de elementos, buscar elementos, etc. Algunos de los mtodos ms comunes son: 1. Aadir un elemento: para aadir un elemento al final de la lista se dispone del mtodo add(elemento). Por ejemplo: String cad = new String(Hola); lista.add(cad);
En la posicin cero de lista se almacena cad, un objeto de tipo String con el valor Hola.

lista

Hola 0

2. Insertar un elemento: para insertar un elemento en una determinada posicin de la lista se dispone del mtodo add(posicin, elemento). Por ejemplo: int y = new Integer(50); int z = 1; lista.add(z, y);
En la posicin uno de lista se almacena y, un objeto de tipo Integer con el valor 50. El valor de z debe ser el siguiente valor consecutivo respecto al tamao de la lista, de lo contrario se produce una excepcin.

lista

Hola 0

50 1

3. Recuperar un elemento: para recuperar un elemento de una determinada posicin de la lista se dispone del mtodo get(posicin). Por ejemplo: int i = 0; lista.get(i);
El mtodo get retorna o devuelve el objeto que se encuentre en la posicin 0 del lista. En este caso el valor Hola.

4. Modificar un elemento: para modificar un elemento determinado de la lista remplazndolo por otro se dispone del mtodo set(posicin, elemento). Por ejemplo: int w = new Integer(35), i = 1; lista.set(i, y);
La posicin 1 de la lista se modifica cambiando el objeto anterior y=50 por nuevo objeto w = 35. Si el valor de i es una posicin inexistente en el ArraList, se producir una excepcin.

lista

Hola 0

35 1

5. Eliminar elementos: el mtodo clear permite eliminar todos los elementos de la lista y remove permite eliminar un elemento determinado. Por ejemplo: int i = 1; lista.remove(i);
Luego de remover un elemento, la lista disminuye su tamao en uno dinmicamente.

lista

Hola 0

lista.clear();

lista 0

6. Buscar elementos: el mtodo contains devuelve true si la lista contiene el elemento especificado, y los mtodos indexOf y lasIndexOf devuelven, respectivamente, el ndice en la lista del primero y del ltimo elemento especificado, o -1 si dicho elemento no se localiza. Por ejemplo: String w = new String(Mundo); if(lista.contains(x)) { lista.set(lista.indexOf(x), w); }
Verifica si la lista contiene el objeto x, si es verdadero, se recupera con indexOf el ndice o posicin dentro de la lista del objeto x, el cual sirve como primer parmetro del mtodo set. El objeto que se encuentre en esa posicin se modifica con el nuevo objeto w con valor Mundo.

7. Tamao: para conocer el tamao de una lista se dispone del mtodo size. Por ejemplo: int elementos = lista.size();

3. Comparacin
ArrayList Array Diferencias En los arreglos se debe definir necesariamente un tamao fijo. Los ArrayList aumentan o disminuyen dinmicamente su tamao En un arreglo se debe especificar la posicin del nuevo elemento. Un ArrayList al ser de primera clase, tiene mtodos propios que permite adicionar un elemento sin necesidad de especificar la posicin dentro de la lista

ArrayList lista = new ArrayList();

String lista[] = new String[2];

String a = new String(Hola); lista.add(a); String b = new String(Mundo); lista.add(b); int tamanio = lista.size(); Object o = lista.get(i);

String a = new String(Hola); lista[0] = a; String b = new String(Mundo); lista[1] = b; int tamanio = lista.length; String o = lista[1];

lista.remove(1);

lista[1] = null;

Cada vez que se remueve un objeto, la lista disminuye en 1 el tamao. En un arreglo esto no sucede, el tamao original se mantiene; se asigna null en la posicin.

boolean estaEn = lista.contains(b);

boolean estaEn = false; for(int i=0; i<lista.length; i++){ if(b.equals(lista[i])){ estaEn = true; break; } }

Es mucho ms fcil saber si una lista contiene o no un objeto especfico, que en un array

4. Ejemplo 1
Se define una clase Animal con un atributo nombre de tipo String y un mtodo getNombre() que retorna el nombre del animal. En la clase Principal se crea un ArrayList que almacena nicamente objetos o instancias de la clase Animal.
Principal usa String nombre getNombre() ArrayList <Animal> animales = new ArrayList <Animal>();

Animal

public class Animal { private String nombre; public Animal(String nom){ nombre = nom; } public String getNombre(){ return nombre; } }

/**********************************************************************/
import java.util.*; public class Principal { public static void main(String[] args) {
//Definicin de la lista animals que almacena instancias de la clase Animal ArrayList<Animal> animales= new ArrayList<Animal>(); //Instancias de clase Animal. Primero se crean dos instancias de la clase Animal, abeja y perro Animal abeja= new Animal("Maya"); Animal perro= new Animal("Pluto"); //Se adiciona los dos objetos anteriores a la lista animales. animales.add(abeja); animales.add(perro); //Se inserta un nuevo objeto en la lista animales. El primer parmetro indica la posicin dentro de la //lista y el segundo una instancia de la clase Animal animales.add(1, new Animal("Silvestre")); //Recupera o muestra los elementos que se encuentran almacenados en la lista. Primero se ubica en la //posicin i de la lista y luego se llama al mtodo getNombre() de la instancia que retorna el nombre del //animal for(int i=0; i<animales.size(); i++) System.out.println("Elemento " + i + ": " + animales.get(i).getNombre()); //Tamao System.out.println("Numero de elementos del ArrayList: " + animales.size()); //Modificar. Primero se muestra el contenido de la lista en la posicin 0, se modifica el elemento que se //encuentra en esa posicin y luego se vuelve a mostrar el contenido de la lista. System.out.println("Elemento 0: " + animales.get(0).getNombre()); animales.set(0, new Animal("Piolin")); System.out.println("Elemento 0: " + animales.get(0).getNombre()); //Buscar if(animales.contains(perro)) { System.out.println("Elemento: " + animales.get(animales.indexOf(perro)).getNombre()); } else { System.out.println("El objeto no se encuentra en el ArrayList");

} //Eliminar. Se puede eliminar un elemento de la lista por medio del mtodo revome(), indicando la //posicin o el nombre del objeto o instancia de la clase Animal. Tambin se puede eliminar todo el //contenido de la lista a travs del mtodo clear(). animales.remove(0); System.out.println("Numero de elementos del ArrayList: " + animales.size()); animales.remove(perro); System.out.println("Numero de elementos del ArrayList: " + animales.size()); animales.clear(); System.out.println("Numero de elementos del ArrayList: " + animales.size());

} }

5. Ejemplo 2
Se crean tres clases. La clase Principal que crea una instancia de la clase lbum. Esta ltima clase define un ArrayList llamado lbum que slo almacena objetos de tipo Imagen. En el constructor de la clase Album se crea la interfaz de usuario; en el mtodo actionPerformed() se manejan los eventos sobre la interfaz. La clase Imagen tiene definido un atributo de tipo ImageIcon y dos mtodos, el constructor y el mtodo getImagen() que retorna la imagen.

Imagen ImageIcon imagen Imagen() getImagen() usa

lbum ArrayList <Imagen> album = new ArrayList <Imagen>() Album() actionPerformed() main() usa Principal

La aplicacin cuenta con una barra de mens con dos mens principales: Archivo e Integrantes. a los que se pueden acceder directamente desde teclado con la combinacin de

teclas Alt+A y Alt+I respectivamente. Archivo cuenta con el submen Salir

e Integrantes

con el submen Quienes somos . Los submens cuentan con accesos directos desde teclado, Ctrl-S y Ctrl-Q respectivamente. Al dar clic sobre el submen Salir la aplicacin finaliza y al dar clic sobre el submen Quienes somos la aplicacin muestra una mensaje de dialogo con el nombre de los integrantes.

La aplicacin presenta cuatro posibles acciones . El botn << muestra la primera imagen del album. El botn < muestra la imagen anterior. El botn > muestra la imagen siguiente. El botn >> muestra la ltima imagen. La ventana muestra, adicionalmente, la posicin de la imagen dentro de la lista (ndice) .
import javax.swing.ImageIcon; public class Imagen { ImageIcon imagen = null; public Imagen(int i){
//Si est trabajando con el sistema operativo Microsoft Windows, deber especificar la ruta absoluta //donde est ubicada la imagen seguido del nombre del archivo. //Si est trabajando con cualquier distribucin del sistema operativo Linux, nicamente deber //especificar la carpeta que contiene las imgenes (/imgenes/) seguido del nombre del archivo

imagen = new ImageIcon("D:/Maestria/Algoritmia y Programacion/Material de Clase/Clase 11/imagenes/img" + i + ".jpg"); } public ImageIcon getImagen(){ return imagen; } }

/**********************************************************************/
public class Principal { /** * @param args */ public static void main(String[] args) { Album ventana = new Album(); ventana.setTitle("Album Fotografico"); ventana.setSize(300, 390); ventana.setResizable(false); ventana.setVisible(true); ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }

/**********************************************************************/
import java.awt.event.ActionEvent; import javax.swing.*; import java.awt.event.*; import java.util.ArrayList; public class Album extends JFrame implements ActionListener { JButton primero, anterior, siguiente, ultimo; JMenuItem salir, quienesomos; JLabel imagen, posicion; int indice=0; //Se crea un ArrayList que almacena instancias de la clase Imagen ArrayList<Imagen> album = new ArrayList<Imagen>(); public Album(){ //Crear las instancias de Imagen for(int i=0; i<12; i++) album.add(new Imagen(i)); //Etiquetas posicion = new JLabel(); imagen = new JLabel(); imagen.setIcon(album.get(indice).getImagen()); posicion.setText("Imagen No. "+String.valueOf(indice)); //Botones primero = new JButton("<<"); primero.setToolTipText("Primera Imagen"); primero.addActionListener(this); primero.setEnabled(false); anterior = new JButton("<"); anterior.setToolTipText("Anterior Imagen"); anterior.addActionListener(this); anterior.setEnabled(false); siguiente = new JButton(">"); siguiente.setToolTipText("Siguiente Imagen"); siguiente.addActionListener(this); ultimo = new JButton(">>"); ultimo.setToolTipText("Ultima Imagen"); ultimo.addActionListener(this);

JMenuBar barra = new JMenuBar(); JMenu archivo = new JMenu("Archivo"); archivo.setMnemonic(KeyEvent.VK_A); JMenu integrantes = new JMenu("Integrantes"); integrantes.setMnemonic(KeyEvent.VK_I); salir = new JMenuItem("Salir"); salir.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.ALT_MASK)); salir.addActionListener(this);

quienesomos = new JMenuItem("Quines Somos"); quienesomos.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, ActionEvent.ALT_MASK)); quienesomos.addActionListener(this); archivo.add(salir); integrantes.add(quienesomos); barra.add(archivo); barra.add(integrantes); setJMenuBar(barra); getContentPane().setLayout(null); getContentPane().add(posicion); getContentPane().add(imagen); getContentPane().add(primero); getContentPane().add(anterior); getContentPane().add(siguiente); getContentPane().add(ultimo); posicion.setBounds(115, 10, 80, 20); imagen.setBounds(70, 35, 260, 240); primero.setBounds(35, 285, 50, 25); anterior.setBounds(90, 285, 50, 25); siguiente.setBounds(145, 285, 50, 25); ultimo.setBounds(200, 285, 50, 25); } public void actionPerformed(ActionEvent e){ if(e.getSource().equals(salir)){ System.exit(0); } if(e.getSource().equals(quienesomos)){ JOptionPane.showMessageDialog(null, "Prof.: Oscar Ceballos", "ArrayList", 1); } if(e.getSource().equals(primero)){ indice = 0; imagen.setIcon(album.get(indice).getImagen()); posicion.setText("Imagen No. "+String.valueOf(indice)); siguiente.setEnabled(true); ultimo.setEnabled(true); anterior.setEnabled(false); primero.setEnabled(false); } if(e.getSource().equals(anterior)){ indice--; imagen.setIcon(album.get(indice).getImagen()); posicion.setText("Imagen No. "+String.valueOf(indice)); siguiente.setEnabled(true); ultimo.setEnabled(true); if(indice == 0) { anterior.setEnabled(false); primero.setEnabled(false); }

} if(e.getSource().equals(siguiente)){ indice++; imagen.setIcon(album.get(indice).getImagen()); posicion.setText("Imagen No. "+String.valueOf(indice)); anterior.setEnabled(true); primero.setEnabled(true); if(indice == album.size()-1) { siguiente.setEnabled(false); ultimo.setEnabled(false); }

} if(e.getSource().equals(ultimo)){ indice = album.size()-1; imagen.setIcon(album.get(indice).getImagen()); posicion.setText("Imagen No. "+String.valueOf(indice)); anterior.setEnabled(true); primero.setEnabled(true); siguiente.setEnabled(false); ultimo.setEnabled(false); } } }

Referencias [1] J. Ceballos. Java: Curso de programacin. Mxico: Alfaomega Grupo Editores, S.A. de C.V. 2006 pp. 195-199

También podría gustarte