¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Desarrollo informático
  3. Las colecciones
Extrait - Desarrollo informático Aprenda a diseñar antes de programar
Extractos del libro
Desarrollo informático Aprenda a diseñar antes de programar Volver a la página de compra del libro

Las colecciones

Objetivos del capítulo

Desarrollar aplicaciones que utilizan las colecciones.

En los ejemplos de este capítulo, nos limitaremos a utilizar las clases Vector y TableList. Nos encontraremos otras colecciones en los siguientes capítulos.

Introducción

1. Definición

Las colecciones, como las tablas, permiten almacenar varios elementos del mismo tipo. 

Al contrario de lo que sucede con la tabla, cuyo tamaño está fijo durante la instanciación, una colección puede cambiar de tamaño dinámicamente. En contraposición, solo puede almacenar referencias de objetos (no elementos de tipo primitivo: int, float…).

Esta limitación no es realmente molesta. Para una lista de enteros, podemos almacenar una lista de objetos de tipo Integer. Cada tipo primitivo se corresponde con una clase (llamada contenedor): Float para float, Double para double, Character para char, etc.

2. Jerarquía parcial de las colecciones

Una colección es una clase que implementa la interfaz Collection.

A continuación se muestra un extracto de la jerarquía de las colecciones:

images/1_207.png

Las clases ArrayList y Vector son colecciones. Heredan de la clase abstracta AbstractList, que implementa la interfaz List, que, a su vez, hereda de la interfaz Collection. Todas estas clases e interfaces están en el paquete java.util.

Por lo tanto, todos los métodos definidos en las interfaces List y Collection están disponibles en las dos clases.

Todas las aplicaciones de este capítulo se pueden programar con una u otra clase (las llamadas a métodos son idénticas).

3. ¿Vector o ArrayList?

Es frecuente comparar las clases...

Ejemplos de utilización de colecciones

1. ArrayList de String

public class ArrayListString  
{  
   public static void main(String argv[])  
   {  
       int i; 

Creación de una lista destinada a contener referencias de objetos String. Por el momento, la colección está vacía:

       ArrayList<String> listaString = new ArrayList<String>(); 

La cadena <String> situada después de ArrayList indica que la colección solo puede contener objetos de tipo String (o de una clase heredada de String). Antes de la versión 5 de Java, las colecciones no eran tipadas. Se podía añadir cualquier tipo de objeto. Esta sintaxis todavía se acepta, a pesar de algunos ‘warnings’.

El método add() añade una celda a la colección:

       listaString.add("Ganso Común");  
       listaString.add("Gorrión");  
       listaString.add("Buitre"); 
images/2_207.png

El compilador rechaza cualquier intento de agregar un objeto que no es del tipo String:

images/F0_207.png

Visualización de las cadenas almacenadas en la ArrayList:

  • El método size() devuelve el tamaño de la ArrayList (el número de cadenas almacenadas). 

  • El método get(i) devuelve la cadena contenida...

Trabajo práctico: Coches (con colecciones)

1. Objetivo

El objetivo es retomar la aplicación TP Coche del capítulo Las tablas, sustituyendo las tablas por colecciones (ArrayList).

2. Tema

Retomar el TP Coches.

  • Utilizar una ArrayList de vendedores, inicializada en el método main().

  • Utilizar una ArrayList de coches, inicializada de manera conversacional, entrando por el teclado el número de coches que se han de crear y después, para cada coche, el número de motor (o 0 para una asignación automática) y el nombre del vendedor.

3. Coches (con colecciones de tipo ArrayList): propuesta de corrección

Solo se debe modificar la clase VerificaCoche:

public class VerificaCoche  
{  
    public static void main(String argv[]) throws IOException  
    {  
        Garaje g1, g2;  
        TableList<Vendedor> listaVendedores;   // Lista de vendedores  
        TableList<Coche>    listaCoches;       // Lista de coches  
        int iCoche;                            // Índices  
        int iVendedor;  ...