Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Colecciones Java
Colecciones Java
Orden de la coleccin
La organizacin de los elementos en una coleccin es usualmente determinada
por una de las siguientes criterios:
1. El orden en el cual fueron agregados los objetos
2. Alguna relacin inherente entre los elementos
Tipos de Datos Abstractos TDA (Abtract Data Type ADT)
Una abstraccin esconde o ignora ciertos detalles de un objeto, y solo se
enfoca en las caractersticas que hacen o componen al objeto en si.
La interface es una abstraccin que nos permite controlar una implementacin
de un objeto.
Una coleccin es una abstraccin ya que se definen las operaciones que
deberan declararse en la interfaz para que los usuarios puedan acceder a ella y
usarla.
Coleccin Set
Nuestra coleccin se llamara Set la cual no contiene elementos duplicados,
asumimos que no cuenta con un orden establecido entre los elementos y es una
coleccin de tipo no lineal
A continuacin se muestra una vista conceptual de la representacin de una coleccin
de tipo Set
Las colecciones contienen operaciones en comn las cuales solo varan en los
detalles, por lo tanto definiremos una clase la cual define todas las operaciones que
pueden aplicarse a cualquier coleccin sin dar detalles de cmo se deba implementar,
es decir utilizaremos una INTERFAZ.
INTERFACES
Una interface nos permite especificar un conjunto de mtodos abstractos,
especificndose la signatura de cada mtodo, pero no su cuerpo. Esta tarea se le deja
al usuario ya que la manera en que se manipula algn objeto de la coleccin varia un
poco dependiendo del tipo de coleccin que utilicemos.
Las interfaces tambin pueden ser del tipo genrico T. En los mtodos de la
interfaz, el tipo de diversos parmetros y valores de retorno se suelen expresar
utilizando el tipo genrico T. Cuando la interfaz sea implementada, dicha
implementacin se basara en el tipo por el cual se sustituya T.
Nuestra interface SetADT<T> se define a continuacin, junto con todos las
operaciones que se le pueden realizar a nuestra coleccin de tipo conjunto
package jss2;
import java.util.Iterator;
public interface SetADT<T> {
/** Agrega un elemento a la coleccin, ignorando elementos
duplicados */
public void add (T element);
/** Remueve de manera aleatoria un elemento de la coleccin,
el
elemento eliminado lo toma como valor de retorno*/
public T removeRandom ();
/** Elimina y Remueve de la coleccin un elemento
especifico, el elemento eliminado lo toma como valor
retorno*/
public T remove (T element);
en
de
de
elementos
que
contiene
nuestra
Iteradores
Un iterador es un objeto que provee la manera para iterar a travs de la coleccin.
La interface Iterator esta definida en la librera de clases de JSE con los dos mtodos
abstractos que son:
hasNext()
Regresa trae si la coleccin tiene mas elementos
next()
Regresa el prximo elemento en la iteracin
Por el hecho de ser una interface significa que deja al usuario la
implementacin de dicha clase como mejor nos convenga, por lo tanto debemos
cuidar los siguientes detalles.
Otra cuestin relativa al uso de los iteradores es qu sucede si se modifica la
coleccin mientras se esta utilizando el iterador. La mayora de las colecciones de la
API Collections de java estn implementadas con lo que se conoce con el nombre de
caracterstica de fallo rpido. Esto simplemente significa que esas colecciones genera,
o deberan generar, una excepcin si se modifica la coleccin mientras se esta
usando el iterador. Sin embargo, la documentacin relativa a estas colecciones es
muy explicita al afirmar que este comportamiento no puede garantizarse.
Una manera de manejar este problema es hacer iteradores que permitan la
modificacin concurrente, reflejndose dichos cambios en la iteracin, as como
tambin la creacin de iteradores que permiten reconocer una instantnea de la
coleccin, sobre la cual las modificaciones concurrentes no tienen ningn impacto.
Implementando una Coleccin con Arrays
Como implementar una Coleccin que es una estructura de datos NO lineal en
un array que es una estructura de datos lineal?
El hecho de que el array almacene los objetos en un orden concreto no es
relevante en este caso porque, en una coleccin de tipo conjunto, no hay ningn
orden definido entre los elementos. Por tanto, nuestra solucin para implementar cada
operacin de la coleccin de tipo conjunto no conceder ninguna relevancia al orden
en el que los objetos estn almacenados en la matriz.