Post on 13-Apr-2017
Programación 3Listas y Conjuntos
Mateo Quizhpi – mateo.quizhpi@ucuenca.ecEscuela de Ingeniería de SistemasUniversidad de Cuenca25 de octubre de 2016
Contenido
Introducción Listas
ArrayList LinkedList
Conjuntos AbstractSet HashSet TreeSet
Introducción
LISTAS CONJUNTOS
LISTAS
Agrupación lineal de elementos, que pueden duplicarse Sus elementos son añadidos por la cabeza, por el final o por cualquier punto Sus elementos pueden ser eliminados de uno a uno o ya sea toda una colección Existen dos tipos de listas: secuenciales y enlazadas Implementa la interfaz clonable El concepto general en Java de lista lo maneja la interfaz List y es la raíz jerárquica de
toda colección de tipo listaList lista;lista = new ArrayList();lista = new LinkedList();
ARRAYLIST
Agrupa elementos, asemejándose a un array (índice) Se puede acceder a cualquier elemento, insertar o borrar a partir del índice en
cualquier posición Ineficiencia al “procesar” datos en posiciones intermedias La clase ArrayList implementa los métodos de la interfaz List, y el método clone() de
la interfaz Cloneable para poder crear una copia independiente de la colección. Constructores de la clase ArrayList:
public ArrayList();public ArrayList(int capacidad);public ArrayList(Collection c);
EJEMPLO - ARRAYLIST
Se realizan las operaciones de añadir, eliminar, buscar y reemplazar con una colección de tipo ArrayList:
RESÚMEN - ARRAYLIST
LINKEDLIST
Organiza los elementos de una colección a la manera de una lista doblemente enlazada
Las operaciones de inserción y borrado en posiciones intermedias son muy eficientes; por el contrario, el acceso a un elemento por índice es ineficiente
Se puede usar LinkedList para crear una estructura de datos Cola o Pila Dos tipos de constructores: un constructor sin argumentos que crea una lista
vacía, y otro constructor que crea la lista con los elementos de otra colecciónpublic LinkedList();public LinkedList(Collection c);
EJEMPLO – LINKED LIST Encontrar un numero capicúa leído del dispositivo estándar de entrada
UTILIZACIÓN – LINKED LIST
MÉTODOS - LINKEDLIST
Las operaciones generales de las listas y métodos específicos que operan sobre el primer y último elemento son:public Object getFirst()public Object getLast()public void addFirst(Object ob)public void addLast(Object ob)public Object removeFirst()public Object removeFirst()
CONJUNTOS
Colección de elementos no duplicados Hay dos tipos de implementaciones, una, a partir de la interfaz SortedSet, mantiene
en orden los elementos, otra sin un orden establecido La interfaz Set declara las operaciones generales de los conjuntos y es la raíz de la
jerarquía Todas las operaciones matemáticas de los conjuntos (unión, intersección, etc) se
realizan con los métodos de las clases concretas HashSet y TreeSet
ABSTRACT SET
Esta clase abstracta deriva de AbstractCollection y por tanto hereda sus métodos tal como los define, que además no redefine.
Métodos:equals() devuelve true si el conjunto actual contiene los mismos elementos que
el conjunto pasado en el argumento.
removeAll(Collection c) quita los elementos que están en la colección c. Devuelve
true si ha habido alguna modificación o, lo que es igual, si al menos hay un elemento en c.
HASHSET
Guarda los elementos de un conjunto sin mantener un orden Los elementos del conjunto se guardan en una tabla hash Utilizando los constructores de la clase HashSet se puede crear un conjunto vacío o un conjunto con los elementos de otra colección:
La declaración de la clase es la siguiente:
MÉTODOS - HASHSET
Los métodos que implementa HashSet son:public boolean add(Object ob) si el elemento no está lo añade y devuelve true.boolean remove(Object ob) si ob pertenece al conjunto es eliminado y devuelvetrue.public void clear() deja vacío el conjunto.public Iterator iterator() crea un iterador.public int size() devuelve el número de elementos.public boolean isEmpty() devuelve true si está vacío.public boolean contains(Object ob) devuelve true si ob pertenece al conjunto.public Object clone() crea una copia del conjunto.
OPERACIONES DE CONJUNTOS
Unión de conjuntosLa operación algebraica unión de dos conjuntos produce otro conjunto con los
elementos comunes y no comunes. El método heredado de AbstractCollection, addAll(), realiza esta operación. Intersección de conjuntos
La intersección de dos conjuntos produce otro conjunto con los elementos comunes. El método retainAll(), heredado de AbstractCollection, realiza esta operación. Diferencia de conjuntos
La diferencia de dos conjuntos, c2- c1, es otro conjunto con los elementos de c2 que no pertenecen a c1. La llamada a removeAll() produce el conjunto diferencia.
EJEMPLO - HASHSET
Crear dos conjuntos de enteros y realizar las operaciones algebraicas: unión, diferencia e intersección.
INSTANCIACIÓN – HASH SET
ITERADOR – HASH SET
TREESET
Los conjuntos de tipo TreeSet se diferencian de los HashSet por mantener en orden los elementos
La ordenación puede ser ascendente, es decir en el orden natural determinado por la interfaz Comparable; o bien el orden que establece la implementación de la interfaz Comparator
Los métodos de esta implementación se encuentra en la interfaz SortedSet La declaración de la interfaz y de la clase son las siguientes:
MÉTODOS - TREESET
La especificación de los métodos más importantes SortedSet está basada en la ordenación, son los siguientes:
SortedSet subSet(Object desde, Object hasta) Devuelve el subconjunto formadopor los elementos mayor o igual que, desde y menor que hasta.SortedSet tailSet(Object desde) Devuelve el subconjunto formado por
elementos mayores o igual que desde.SortedSet headSet(Object hasta) Devuelve el subconjunto formado por los
elementos estrictamente menores que hasta. Los subconjuntos que se obtienen son “visiones” del conjunto origen; y toda
modificación del subconjunto modifica el conjunto origen, y viceversa. Además, first() y last() devuelven, respectivamente, el primero y último elementos.
CONSTRUCTORES - TREESET
Posee 4 constructores:El primero crea un conjunto vacíoEl segundo también y además establece el objeto comparator a partir del cual
realizará la ordenación de los elementos.Los otros dos constructores crean el conjunto a partir de otro conjunto, o con los elementos de cualquier colección.
EJEMPLOS - TREESET
Crear dos conjuntos ordenados cuyos elementos sean cadenas de caracteres (String). Realizar operaciones de insertar, eliminar, obtener subconjunto y operaciones algebraicas de unión, diferencia e intersección.
COMPARATOR – TREE SET
BIBLIOGRAFÍA
Joyanes Aguilar, L. Zahonero Martinez, I. (2008), Estructura de Datos en Java, Madrid, España: MCGRAW-HILL/INTERAMERICANA.