1. Programación 3
Listas y Conjuntos
Mateo Quizhpi – mateo.quizhpi@ucuenca.ec
Escuela de Ingeniería de Sistemas
Universidad de Cuenca
25 de octubre de 2016
4. 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 lista
List lista;
lista = new ArrayList();
lista = new LinkedList();
5. 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);
6. EJEMPLO - ARRAYLIST
Se realizan las operaciones de añadir, eliminar, buscar y reemplazar con una colección de tipo
ArrayList:
10. 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ón
public LinkedList();
public LinkedList(Collection c);
11. EJEMPLO – LINKED LIST
Encontrar un numero capicúa leído del dispositivo estándar de entrada
15. 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()
16. 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
17. 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.
18. 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:
19. 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 devuelve
true.
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.
20. OPERACIONES DE CONJUNTOS
Unión de conjuntos
La 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.
21. EJEMPLO - HASHSET
Crear dos conjuntos de enteros y realizar las operaciones algebraicas: unión, diferencia e
intersección.
27. 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:
28. 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 formado
por 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.
29. CONSTRUCTORES - TREESET
Posee 4 constructores:
El primero crea un conjunto vacío
El 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.
30. 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.