section6 scjp6.0

27
Asesoría SCJP: Sun Certified Java Programmer 6.0 Sun Educational Services

Upload: daniel-martinez

Post on 28-Jun-2015

97 views

Category:

Education


2 download

DESCRIPTION

Java

TRANSCRIPT

Page 1: Section6 scjp6.0

Asesoría SCJP: Sun Certified Java Programmer 6.0

Sun Educational Services

Page 2: Section6 scjp6.0

Section 6: Collections & Generics

Page 3: Section6 scjp6.0

3

SCJP: Section 6 Section 6: Collections / Generics

Given a design scenario, determine which collection classes and/or interfaces should be used to properly implement that design, including the use of the Comparable interface.

Write code that uses the generic versions of the Collections API, in particular, the Set, List, and Map interfaces and implementation classes. Recognize the limitations of the non­generic Collections API. 

Develop code that makes proper use of type parameters in class/interface declarations, instance variables, method arguments, and return types; and write generic methods or methods that make use of wildcard types and understand the similarities and differences between these two approaches.

Page 4: Section6 scjp6.0

4

SCJP: Section 6 Section 6: Collections / Generics (Continuación)

Distinguish between correct and incorrect overrides of corresponding hashCode and equals methods, and explain the difference between == and the equals method.

Use capabilities in the java.util package to write code to manipulate a list by sorting, performing a binary search, or converting the list to an array. Use capabilities in the java.util package to write code to manipulate an array by sorting, performing a binary search, or converting the array to a list. Use the java.util.Comparator and java.lang.Comparable interfaces to affect the sorting of lists and arrays. Furthermore, recognize the effect of the "natural ordering" of primitive wrapper classes and java.lang.String on sorting.

Page 5: Section6 scjp6.0

5

Definición de una Java CollectionUna colección es una estructura de datos dinámica

En Java todas las colecciones son un conjunto de Objetos de tipo Clase Object

Pueden incrementar o decrementar dinámicamente su tamaño en tiempo de ejecución

Existen 3 tipos de Interfaces en el framework de Colecciones en Java

Tipo List

Tipo Set

Tipo Map

Page 6: Section6 scjp6.0

6

Implementaciones de Colecciones

Page 7: Section6 scjp6.0

7

Jerarquía de Colecciones Java

Page 8: Section6 scjp6.0

8

Conceptos BásicosSe dice que una colección es ordenada, cuando se respeta el orden de inserción del los elementos, es decir: “tal cual se insertan tal cual se extraen”

Una colección es sorted ( clasificada ) cuando sus elementos están clasificados de acuerdo algún tipo de comparación

Alfabéticamente

De mayor valor a menor

Por prioridades, etc...

Page 9: Section6 scjp6.0

9

Colecciones tipo ListLa interface java.util.List define una colección de objetos ordenados

En las implementaciones de List se permiten elementos duplicados

Las implementaciones disponibles de List son:

ArrayList

Vector

LinkedList

Page 10: Section6 scjp6.0

10

Implementaciones tipo Listjava.util.ArrayList

Lista ordenada que acepta elementos duplicados

Los elementos se agregan al final de la colección

No Thread Safe

java.util.LinkedList

Lista ordenada que acepta elementos duplicados

Pueden insertarse elementos al principio o al final de la colección 

addFirst(Object obj);addLast(Object obj);

No Thread Safe

Page 11: Section6 scjp6.0

11

Implementaciones tipo ListContinuación implementaciones tipo List

java.util.Vector

Similar a ArrayList pero sus métodos de acceso son synchronized, es decir es Thread­Safe

Debido a que es Thread­Safe se considera como una colección de peso, por lo que solo se recomienda su uso en aplicaciones multi thread.

Si se utilizara en aplicaciones mono thread, puede ocasionar un overhead innecesario

Page 12: Section6 scjp6.0

12

Colecciones tipo SetLa interface java.util.Set define  conjuntos de objetos NO ordenados y NO permiten elementos duplicados (Objetos con los mismo contenidos)

Utiliza  algoritmos de hashing para posicionar los elementos

En clases de usuario, es necesario sobre escribir el método hashCode de Object, para especificar el algoritmo de hashing que evite objetos duplicados en la colección Set.

Page 13: Section6 scjp6.0

13

Implementaciones tipo Setjava.util.HashSet

Utiliza algoritmos de hashCode para posicionar  los elementos

No permite duplicados (colapso de hash values)

No es Ordenada (es regido por el algoritmo de Hash)

Con respecto a las colecciones tipo List, las Set son más rápidas en lecturas, pero un tanto más lentas en escritura

No Thread­Safe

Page 14: Section6 scjp6.0

14

Implementaciones tipo Setjava.util.LinkedHashSet

Colección de Objetos Ordenados

No permite elementos duplicados

No Thread­Safe

java.util.TreeSet

Permite insertar elementos clasificados (sorted) de acuerdo al orden natural definido por la interface Comparable

No acepta NULL

No Thread­Safe

Page 15: Section6 scjp6.0

15

Colecciones tipo MapImplementan  estructuras de pares ordenados:

 ID key

 Value

Definidas por la interface java.util.Map

Se consideran muy útiles como mapas de correspondencia

A diferencia de las listas List, y los conjuntos Set, los Map, no implementan la interface Java Collection, pero si se consideran parte del Collections FrameWork

Siempre reciben un par de Objetos: el ID Key,  y su valor value asociado

Page 16: Section6 scjp6.0

16

Implementaciones tipo Mapjava.util.HashMap

Mapa de valores ID Key / Value

No Thread­Safe

java.util.Hashtable

Similar a HashMap, solo que No permite valores nulos en Key/Value

Thread Safe

java.util.LinkedHashMap

Inserción ordenada

java.util.TreeMap

Mapa clasificado  (sorted) 

Page 17: Section6 scjp6.0

17

Resumen de Colecciones

Page 18: Section6 scjp6.0

18

La clase Object

Page 19: Section6 scjp6.0

19

La clase ObjectPuntos a considerar:

Metodos que si pueden ser sobreescritos:

equals/hashCode 

finalize

toString

Métodos que no pueden ser sobreescritos:

notify

notyAll

wait

Page 20: Section6 scjp6.0

20

GenéricosCaracterística agregada a la versión Java 1.5

Permite Definir una colección de objetos de algún tipo particular 

Ahora las colecciones se consideran Type­Safe

Con los genéricos solamente se pueden insertar objetos de tipo genérico o de su familia

Si el programado intenta insertar algún objeto de tipo distinto al genérico, ahora el compilador lo valida

Evita las Excepciones de tipo:

java.lang.CastException

Page 21: Section6 scjp6.0

21

Ejemplo  Código de GenéricosCódigo Java 1.5 con Genericos

public class TestGenerics{        

    public static void main(String args[]){                      List<String> list = new ArrayList<String>();                list.add("Sun");        list.add("Certified");        list.add("Java");        list.add("Programmer");        //list.add(new Thread());         // Error Compilacion, Genericos !!!        for(String s: list){            System.out.println(s);               }    }           }

Page 22: Section6 scjp6.0

22

Inteface CollectionsContiene un conjunto de métodos static. 

    Los cuales trabajan o retornan colecciones.

Ejemplos:

Collections.sort().­ 

  Ordena la colección de acuerdo al orden natural de la misma.

  Si no existe un orden natural, se debe implementar la interfaz        

  Comparable. Método a implementar:

           public int compareTo(T o){}

Collections.binarySearch(List l, T o).­ 

Realiza una búsqueda con algoritmo binario. Deberá estar implementada la interfaz comparable.

Page 23: Section6 scjp6.0

23

Interface Comparable

Impone un orden en los objetos de las clases que la implementen.

Implementación del método: compareTo(Object o)

Método de comparación para designar el orden de los elementos de la Lista o Arreglo.

Invocación:

Collections.sort(List);

Arrays.sort(Array);

Útil para colecciones de tipo List, Set (No Sorted)

Page 24: Section6 scjp6.0

24

Interface Comparator 

Función de comparación que impone un orden en una colección.

Alternativa de interface Comparable.

Método a implementar:

public int compare(T o1, T o2)

Util para colecciones de tipo List, Set (No Sorted)

Page 25: Section6 scjp6.0

25

Interface Comparable & ComparatorNo aplicables para colecciones No Sorted de tipo Map. Apegadas al método hashCode().

Colecciones: TreeSet & TreeMap

Intentaran utilizar el método compareTo() de la inteface Comparable o bien la implementación del mismo.

Intentaran utilizar el método compare() de la interface Comparator o bien la implementación del mismo. 

Page 26: Section6 scjp6.0

26

Fin de Sección 6:                  Collections & Generics

• Notas

Page 27: Section6 scjp6.0

27

Carácter WildcardUtilizado como un carácter para indicar tipos de Colecciones Genéricas.

Aplicable solo en declaraciones, nunca en Constructores.

Tipos de Wildcards:

"? extends TypeA":Cualquier Subtipo  o igual a TypeA

"? super TypeA"    :Cualquier Superipo o igual a TypeA

"?"                         :Cualquier Tipo