La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Criterios de ordenación y Guava Comparator, Comparable y Ordering Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión.

Presentaciones similares


Presentación del tema: "Criterios de ordenación y Guava Comparator, Comparable y Ordering Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión."— Transcripción de la presentación:

1 Criterios de ordenación y Guava Comparator, Comparable y Ordering Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Práctica 14

2 PR14: Criterios de Comparación y Ordering Índice  Criterio de orden natural: Comparable  Criterio de orden adicional: Comparator  Ordering

3 PR14: Criterios de Comparación y Ordering  comparaTo establece un orden natural para los objetos.  Debe coincidir en criterio con el método equals.  Valor entero devuelto:  Negativo si this es menor que o  Cero si this es igual a o  Positivo si this es mayor que o Comparable 3 package java.lang; public interface Comparable { int compareTo(T o); }

4 PR14: Criterios de Comparación y Ordering  compareTo:  Simetría: si el resultado de comparar un objeto con otro es cero, el resultado coincide a la inversa.  Transitividad: si el signo de comparar un objeto con otro coincide con el signo de comparar el segundo con un tercero, entonces también coincide con el signo de comparar el primero con el tercero.  equals/compareTo:  Si dos objetos son iguales, el resultado de su comparación será igual a cero, y viceversa Comparable: propiedades 4

5 PR14: Criterios de Comparación y Ordering Ejemplo 5 public interface Persona extends Comparable, Copiable { public String getNombre(); public String getApellidos(); public Integer getEdad(); …} public class PersonaImpl implements Persona { public int compareTo(Persona p){ int res=this.getApellidos().compareTo(p.getApellidos()); if (res==0) res=this.getNombre().compareTo(p.getNombre()); return res; }... Persona p1 = new PersonaImpl(“María”,“García”,20); Persona p2 = new PersonaImpl(“María”,“Zamorano”,20); if(p1.compareTo(p2)==0) mostrar(p1 + " y " + p2 + " no son iguales");...

6 PR14: Criterios de Comparación y Ordering  compare establece órdenes alternativos para los objetos.  Valor entero devuelto  Negativo si o1 es menor que o2  Cero si los objetos o1 y o2 son iguales  Positivo si o1 es mayor que o2  Es necesario implementar una nueva clase que implemente Comparator Comparator 6 package java.util; public interface Comparator { int compare(T o1, T o2); }

7 PR14: Criterios de Comparación y Ordering  Compare:  Simetría: si el resultado de comparar un objeto con otro es cero, el resultado coincide a la inversa  Transitividad: si el signo de comparar un objeto con otro coincide con el signo de comparar el segundo con un tercero, entonces también coincide con el signo de comparar el primero con el tercero  equals/compare:  Si dos objetos son iguales, el resultado de su comparación será igual a cero, y viceversa Comparator: propiedades 7

8 PR14: Criterios de Comparación y Ordering Ejemplo  Comparador de Persona por edad:  Ejemplo de uso: public class ComparadorPersonaEdad implements Comparator { public int compare(Persona o1, Persona o2){ return o1.getEdad().compareTo(o2.getEdad()); }... Persona p1 = new PersonaImpl(1,2); Persona p2 = new PersonaImpl(3,2); Comparator cmp = new ComparadorPersonaEdad (); if(cmp.compare(p1,p2)==0) mostrar(p1 + " y " + p2 + " tienen la misma edad");...

9 PR14: Criterios de Comparación y Ordering Ordering  Clase de la librería Guava  La librería se descarga de: http://code.google.com/p/guava-libraries/

10 PR14: Criterios de Comparación y Ordering Ordering  Importar la librería:

11 PR14: Criterios de Comparación y Ordering Ordering  Importar la librería:

12 PR14: Criterios de Comparación y Ordering Ordering  Importar la librería:

13 PR14: Criterios de Comparación y Ordering Ordering  Importar la librería:

14 PR14: Criterios de Comparación y Ordering Ordering  El constructor de la clase Ordering es protegido.  Construcción de objetos de tipo Ordering a partir de 3 métodos estáticos:  from Comparator c = new ComparadorPorEdad(); Ordering ord1 = Ordering.from(c);  usingToString Ordering ord2 = Ordering.usingToString();  natural Ordering ord3 = Ordering.natural();

15 PR14: Criterios de Comparación y Ordering Ordering  Métodos:  static Ordering from(Comparator comparator) Devuelve un ordering para un comparator existente.OrderingfromComparator  static Ordering usingToString() Devuelve un ordering que compara objetos según el orden alfabético de la representación en cadena (toString) de los objetos del iterable.OrderingObjectusingToString  static Ordering natural() Devuelve un ordering en función del orden natural, es decir, del método compareTo.ComparableOrderingnatural  List sortedCopy(Iterable iterable) Devuelve una copia ordenada de un iterable dado. El orden del iterable depende del criterio de comparación asociado al objeto ordering que invoque este método.TListsortedCopyIterable  int binarySearch(List sortedList, T key) Devuelve la posición del element key en el iterable ordenado sortedList utilizando el algoritmo de búsqueda binaria.binarySearchListT  Ordering nullsFirst() Devuelve un ordering que trata iterables con elementos null, de manera que éstos se consideran menores al resto de objetos, si se ordena los elementos null quedarán al principio.TOrderingnullsFirst  Ordering nullsLast() Similar al anterior, pero los elementos null quedarán al final del iterable si este es ordenado.TOrderingnullsLast  E max(Iterable iterable) Devuelve el máximo del iterable de acuerdo con el criterio de ordenación asociado al objeto ordering que invoca este método.TmaxIterable  E min(Iterable iterable) Devuelve el mínimo del iterable de acuerdo con el criterio de ordenación asociado al objeto ordering que invoca este método.TminIterable


Descargar ppt "Criterios de ordenación y Guava Comparator, Comparable y Ordering Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión."

Presentaciones similares


Anuncios Google