Programación 3: listas y conjuntos en java

Post on 13-Apr-2017

411 views 6 download

Transcript of Programación 3: listas y conjuntos en java

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.