Вы находитесь на странице: 1из 15

UNIVERSIDAD NACIONAL DE SAN CRISTBAL DE HUAMANGA

FACULTAD DE INGENIERA MINAS, GEOLOGA Y CIVIL


DEPARTAMENTO ACADMICO DE MATEMTICAS Y FSICA

ESTRUCTURA DE DATOS [IS-241] LABORATORIO N 02 ITERATOR - SET COMPARABLE - COMPARATOR


I.- TEMAS: 1.1. Implementar Iterator 1.2. Implementar Set y sus propiedades bsicas en Java. 1.3. Implementar la interfaz Comparable en una clase.

II.- CONCEPTOS:

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

COLECCIN Una coleccin es el objeto que representa un conjunto de elementos relacionados.

Qu le puedo pedir a una Collection? . Agregar un elemento . Quitar . Saber si un elemento est en una coleccin . Su tamao

Las colecciones no tiene un mecanismo directo para recorrerse, por ese motivo el contrato no tiene mtodos do: y todos sus derivados (select:, reject:, collect:, etc.), pero s veremos que de ello se encarga otro objeto: el Iterator. Viendo java.util.Collection

<<USES>>

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

2.1.

ITERATOR
Provee un mecanismo genrico para iterar sobre cada uno de los elementos de una coleccin. Cualquier coleccin de objetos puede crear otro objeto llamado Iterator, este objeto tiene referencias a todos los objetos de la coleccin, y proporciona mtodos sencillos de utilizar que nos posibilita movernos por la coleccin seleccionando objetos de ella. Collection >> Iterator iterator(); interface Iterator{ boolean hasNext(); /* Devuelve true si la iteracin tiene mas elementos */ Object next(); /* Devuelve el siguiente elemento de la iteracin Lanza excepcin NoSuchElementException */ void remove(); /* Elimina el ltimo elemento devuelto por la iteracin Est capacitado para decir que no lo implementa UnsupportedOperationException */ }

Nota: hasprevious(). Recorre la lista hacia atrs.

2.2. INTERFACE SET Coleccin sin elementos repetidos implementada por HashSet y TreeSet. Set no agrega nada a la interface Collection, pero el contrato se modifica (me asegura que mi coleccin no va a tener elementos duplicados). HashSet Un Set implementado mediante una tabla hash. Es una buena implementacin de propsito general por lo que la bsqueda, la adicin y eliminacin son insensibles al tamao de los contenidos.

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

TreeSet Un SortedSet implementado utilizando un rbol binario equilibrado. Es ms lento para buscar o modificar que un HashSet, pero mantiene los elementos ordenados. Asume que los elementos son comparables si no se le ha pasado un comparator en el constructor. Mtodos de la interface: interface Set <E> boolean add(E elemento): void clear() boolean contains(E elemento) boolean equals(Object x) boolean isEmpty()Iterator <E> iterator () boolean remove(E elemento)

2.3. INTERFACE MAP Coleccin de pares clave/valor (tabla-diccionario) No puede contener claves duplicadas Una clave puede mapear a lo sumo un valor

HashMap Una implementacin de Map con una tabla hash. El mtodo hashCode de cada clave se utiliza para seleccionar un lugar en la tabla Una coleccin de utilidad muy general con tiempos relativamente cortos de bsqueda e insercin. TreeMap Una implementacin de SortedMap utilizando un rbol binario equilibrado que mantiene sus elementos ordenados por clave. til para conjuntos de datos ordenados que requieren una bsqueda por clave moderadamente rpida.

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

Asume que los elementos son comparables si no se le ha pasado un comparator en el constructor.

2.3. INTERFACE COMPARABLE La interfaz Comparable nos permite relacionar objetos para poder darles un ordenamiento natural. Si por ejemplo decimos que las personas implementan la interfaz Comparable.

Esta interfaz tiene un solo mtodo, compareTo(), que tendremos que sobrecargar, si queremos que nuestra clase sea susceptible de organizacin. Este mtodo tiene que devolver un valor positivo si objeto1 es menor que objeto pasado al mtodo (objeto2) y un valor negativo si objeto2 es el menor. Es decir: Si objeto1.compareTo(objeto2); Si objeto 1 es menor que objeto2, entonces la llamada devolver un valor positivo, pero si objeto2 es el menor, entonces deberamos obtener un valor negativo como respuesta. La decisin de cmo organizar nuestros objetos es nuestra. Podramos organizar los objetos por uno o ms de sus atributos. Comparator: Me permite definir ms formas de ordenamiento.

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

III.- DESARROLLO DE LA PRCTICA: 3.1. ITERATOR PARA RECORRER UNA COLECCIN

Ejemplo N 01:

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

3.2. INTERFACE SET


Ejemplo N 01:

Ejemplo N 02:

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

3.3. INTERFACE MAP


Ejemplo N 01:

Ejemplo N 02:

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

3.3. IMPLEMENTS COMPARATOR


Ejemplo N 01:

Ejemplo N 02:

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

Ejemplo N 03:

public class Persona implements Comparable{ private String nombre; private int edad; private boolean trabaja; public Persona(){ nombre=""; edad=0; trabaja=false; } public Persona(String nombre, int edad, boolean trabaja){ this.nombre = nombre; this.edad=edad; this.trabaja=trabaja; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public int getEdad() { return edad; }

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

public void setEdad(int edad) { this.edad = edad; } public boolean isTrabaja() { return trabaja; } public void setTrabaja(boolean trabaja) { this.trabaja = trabaja; } @Override public String toString(){ String estado="El estado del Objeto \n"; estado+=" Nombre: "+nombre+"\n"; estado+=" Edad: "+edad+"\n"; estado+=" Trabaja: "+trabaja+"\n"; return estado; } public int compareTo(Object o) { Persona p=(Persona)o; if(getEdad()==p.getEdad()) return 0; if(getEdad()>p.getEdad()) return 1; else return -1; } } import java.util.*; public class Aplicacion { public static void main(String[] args) { Persona p1,p2,p3; p1=new Persona("Jack", 115, true); p2=new Persona("Yur", 17, true); p3=new Persona("Luk", 20, false); ArrayList<Persona> contenedor=new ArrayList<Persona>(); contenedor.add(p1); contenedor.add(p2); contenedor.add(p3); Collections.sort(contenedor); System.out.print("La persona de mayor edad es:"); System.out.println(contenedor.get(contenedor.size()1).getNombre()); }}

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

Ejercicio N 01: Implementar una clase Conjunto que almacene objetos.

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

Implementar una clase Demo:

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

Ejercicio N 02: Implementar un Conjunto con la Interfaz SET.

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

TAREA N 02: 2.1. Partiendo de la implementacin realizada en el ejercicio de Conjuntos, se quiere aadir una nueva operacin al TAD Conjunto: la unin disjunta. La unin disjunta de dos conjuntos A y B se define como el conjunto de elementos que estn presentes en A o en B, pero no ambos. Si la interseccin de A y B es vaca, entonces la unin disjunta es igual a la unin de los dos conjuntos. Se pide: Modificar las clases anteriores para aadir esta nueva operacin. Probar la nueva operacin desde la clase PruebaConjunto.

2.2. Se pide realizar una nueva implementacin de la interfaz Conjunto<E>, pero utilizando esta vez para ello el contenedor Map del framework de contenedores de Java.

Ing. Karen Carrin Domnguez

kcarriond@gmail.com

Вам также может понравиться