Clases contenedoras

Un contenedor es una estructura de datos que guarda y organiza un conjunto de objetos, llamados elementos de contenedor, y proporciona acceso a ellos mediante los métodos de un tipos de datos abstractos. También se utiliza el término conjunto en lugar de contenedor.


Algunas clases contenedoras son:

Estas clases se redimensionan automáticamente, por lo que se puede colocar en ellas cualquier número de objetos sin necesidad de tener que ir controlando continuamente en el programa la longitud de la colección.


La clase Vector

La clase Vector es parte del paquete java.util de la librería estándar de clases de Java. Ofrece un servicio similar a un arreglo, ya que se pueden almacenar y accesar valores y referencias a través de un índice. Pero mientras un arreglo es de cierto tamaño dado, un objeto de tipo Vector puede dinámicamente crecer y decrecer conforme se vaya necesitando. Un elemento puede insertarse y eliminarse de una posición específica a través de la invocación de un sólo método.

A diferencia de un arreglo, un Vector no está declarado para ser de un tipo particular.  Un objeto de tipo Vector maneja una lista de referencias a la clase Object, así no pueden almacenarse tipos de datos primitivos.


Algunos de los métodos de la clase Vector se muestran a continuación:

Vector ( )
Constructor: crea un vector inicialmente vacío
void addElement (Objet obj)
Inserta el objeto especificado al final del vector
void setElementAt (Object obj, int indíce)
Inserta el objeto específicado en el vector en la posición específicada
Object remove (int indíce)
Elimina el objeto que se encuentra en la posición específicada y lo regresa
boolean removeElement (Object obj)
Elimina la primera occurencia del objeto específicado en el vector
void removeElementAt (int indíce)
Elimina el objeto específicado en el índice del vector
void clear ( )
Elimina todos los objetos del vector
boolean contains (Object obj)
Regresa verdadero si el objeto dado pertenece al vector
int indexOf (Object obj)
Regresa el índice del objeto específicado. Regresa -1 si no fue encontrado el objeto
Object elementAt (int indíce)
Regresa el componente en el índice específicado
boolean isEmpty ( )
Regresa verdadero si el vector no contiene elementos
int size ( )
Regresa el número de elementos en el vector


Ejemplo:


import java.util.Vector;
/**
 * Demuestra el uso de un objeto de la clase Vector
 */

public class Beatles
{
    public static void main ()
    {
        Vector band = new Vector ();
        band.addElement ("Paul");
        band.addElement ("Pete");
        band.addElement ("John");
        band.addElement ("George");

        System.out.println (band);

        band.removeElement ("Pete");

        System.out.println (band);
        System.out.println ("En la posición 1 está: " + band.elementAt (1));

        band.insertElementAt ("Ringo", 2);

        System.out.println ("Tamaño de la banda: " + band.size ());
        for (int i = 0; i < band.size (); i++)
            System.out.print ( band.elementAt (i) + " ");
    }
}


Si se necesitan añadir valores de datos primitivos a un Vector se pueden utilizar las clases conocidas como envoltorios que son: Integer, Long, Double y Float. Sus métodos de conversión respectivos son: intValue ( ), longValue ( ), doubleValue ( ) y floatValue ( ).

cerebro Ejercicio:


Complemente la siguiente clase, escribiendo las instrucciones necesarias donde se muestran los asteriscos:

import java.util.*;
/**
 * Uso de las clases Vector e Integer
 */
public class EjercicioVector
{

    public static void main ()
    {
        Vector v = new Vector ();
        v.add (new Integer (1));
        v.add (new Integer (3));
        v.add (new Integer (5));
       
        System.out.println ("Inicialmente los elementos del vector son: ");
        for (int i = 0; i < v.size (); i++)
        {
            Integer iI = (Integer) v.get (i);
            System.out.print (iI.************() + " ");
        }
       
        // Insertar un nuevo Objeto de tipo Integer cuyo valor sea 10
        System.out.println ("\nSe inserta un nuevo objeto cuyo valor es 10");
************
        //El nuevo vector es
************
       
        // Insertar un nuevo Objeto de tipo Integer cuyo valor sea 6 en la pos.3
        System.out.println ("Se inserta un nuevo objeto cuyo valor es 6 en la posición 3");
************
        //El nuevo vector es
************
       
        // Eliminar el objeto que contiene al Integer cuyo valor es 3
        System.out.println ("Se elimina el objeto cuyo valor es 3");
************
        //El nuevo vector es
************
       
        // Escribir el valor del segundo objeto
        System.out.println ("El valor del segundo objeto es: " + 
************);

        // Determinar el número de objetos del vector
        System.out.println ("El tamaño del vector es: " + 
************);
       
        // Eliminar el tercer objeto y escribir su valor
        System.out.println ("En la tercera posición había un: " + 
************);
        //El nuevo vector es
        System.out.println (
************);       
    }
}

cerebro Ejercicio:


Declare la  clase Persona, representada por el siguiete diagrama UML:



Persona
String nombre
int edad
char género
String  teléfono
Persona ( )
void escribe ( )
String escribeGenero ( )

Declare una clase Amigos, en cuyo método principal:

1. Se cree el objeto de tipo Vector amigos
2. Introduzca a 5 de sus amigos
3. Se imprima la lista de sus amigos

La clase LinkedList

La clase LinkedList pertenece al paquete java.util. Tiene características similares a la clase Vector pero trabaja de forma dinámica.
 Su diagrama de herencia se muestra a continuación:

java.lang.Object
  |
  +--java.util.AbstractCollection
        |
        +--java.util.AbstractList
              |
              +--java.util.AbstractSequentialList
                    |
                    +--java.util.LinkedList

Algunos métodos son:

LinkedList ( )
Constructor: crea una lista inicialmente vacía
LinkedList (Collection c)
Constructor: Crea una lista con los elementos de la colección

void add (Objet obj)
Inserta el objeto especificado al final del vector
void addFirst (Objet obj)
Inserta el objeto especificado al final del vector

void add (int index, Objet obj)
Inserta el objeto especificado en la posición index

void set (int indíce, Object obj)
Inserta el objeto específicado en el vector en la posición específicada
Object remove (int indíce)
Elimina el objeto que se encuentra en la posición específicada y lo regresa
boolean remove (Object obj)
Elimina la primera occurencia del objeto específicado en el vector
void removeElementAt (int indíce)
Elimina el objeto específicado en el índice del vector
void clear ( )
Elimina todos los objetos del vector
boolean contains (Object obj)
Regresa verdadero si el objeto dado pertenece al vector
int indexOf (Object obj)
Regresa el índice del objeto específicado. Regresa -1 si no fue encontrado el objeto
Object get (int indíce)
Regresa el componente en el índice específicado
int size ( )
Regresa el número de elementos en el vector

cerebro Ejercicio:


Modifique la clase Amigos para que en vez de utilizar un Vector utilice una LinkedList.