Programación 3: listas y conjuntos en java

34
Programación 3 Listas y Conjuntos Mateo Quizhpi – [email protected] Escuela de Ingeniería de Sistemas Universidad de Cuenca 25 de octubre de 2016

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

Page 1: Programación 3: listas y conjuntos en java

Programación 3Listas y Conjuntos

Mateo Quizhpi – [email protected] de Ingeniería de SistemasUniversidad de Cuenca25 de octubre de 2016

Page 2: Programación 3: listas y conjuntos en java

Contenido

Introducción Listas

ArrayList LinkedList

Conjuntos AbstractSet HashSet TreeSet

Page 3: Programación 3: listas y conjuntos en java

Introducción

LISTAS CONJUNTOS

Page 4: Programación 3: listas y conjuntos en java

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();

Page 5: Programación 3: listas y conjuntos en java

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);

Page 6: Programación 3: listas y conjuntos en java

EJEMPLO - ARRAYLIST

Se realizan las operaciones de añadir, eliminar, buscar y reemplazar con una colección de tipo ArrayList:

Page 7: Programación 3: listas y conjuntos en java
Page 8: Programación 3: listas y conjuntos en java
Page 9: Programación 3: listas y conjuntos en java

RESÚMEN - ARRAYLIST

Page 10: Programación 3: listas y conjuntos en java

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);

Page 11: Programación 3: listas y conjuntos en java

EJEMPLO – LINKED LIST Encontrar un numero capicúa leído del dispositivo estándar de entrada

Page 12: Programación 3: listas y conjuntos en java
Page 13: Programación 3: listas y conjuntos en java
Page 14: Programación 3: listas y conjuntos en java

UTILIZACIÓN – LINKED LIST

Page 15: Programación 3: listas y conjuntos en java

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()

Page 16: Programación 3: listas y conjuntos en java

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

Page 17: Programación 3: listas y conjuntos en java

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.

Page 18: Programación 3: listas y conjuntos en java

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:

Page 19: Programación 3: listas y conjuntos en java

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.

Page 20: Programación 3: listas y conjuntos en java

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.

Page 21: Programación 3: listas y conjuntos en java

EJEMPLO - HASHSET

Crear dos conjuntos de enteros y realizar las operaciones algebraicas: unión, diferencia e intersección.

Page 22: Programación 3: listas y conjuntos en java
Page 23: Programación 3: listas y conjuntos en java
Page 24: Programación 3: listas y conjuntos en java

INSTANCIACIÓN – HASH SET

Page 25: Programación 3: listas y conjuntos en java
Page 26: Programación 3: listas y conjuntos en java

ITERADOR – HASH SET

Page 27: Programación 3: listas y conjuntos en java

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:

Page 28: Programación 3: listas y conjuntos en java

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.

Page 29: Programación 3: listas y conjuntos en java

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.

Page 30: Programación 3: listas y conjuntos en java

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.

Page 31: Programación 3: listas y conjuntos en java
Page 32: Programación 3: listas y conjuntos en java

COMPARATOR – TREE SET

Page 33: Programación 3: listas y conjuntos en java
Page 34: Programación 3: listas y conjuntos en java

BIBLIOGRAFÍA

Joyanes Aguilar, L. Zahonero Martinez, I. (2008), Estructura de Datos en Java, Madrid, España: MCGRAW-HILL/INTERAMERICANA.