12.07.2015 Views

k19-k11-orientacao-a.. - Departamento de Sistemas e Computação

k19-k11-orientacao-a.. - Departamento de Sistemas e Computação

k19-k11-orientacao-a.. - Departamento de Sistemas e Computação

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

159 COLLECTIONS3 colecao . add (" Rafael Cosentino ");45 for ( Object x : colecao ) {6 System . out . println (x);7 }Código Java 18.22: Coleção <strong>de</strong> elementos genéricosPorém, normalmente, precisamos tratar os objetos <strong>de</strong> forma específica pois queremos ter acessoaos métodos específicos <strong>de</strong>sses objetos. Nesses casos, <strong>de</strong>vemos fazer casting <strong>de</strong> referências.1 Collection colecao = ...23 colecao . add (" Rafael Cosentino ");45 for ( Object x : colecao ) {6 String s = ( String )x;7 System . out . println (s. toUpperCase ());8 }Código Java 18.23: Aplicando casting <strong>de</strong> referênciasO casting <strong>de</strong> referência é arriscado pois em tempo <strong>de</strong> compilação não temos garantia que ele estácorreto. Dessa forma, corremos o risco <strong>de</strong> obter um erro <strong>de</strong> execução.Para ter certeza da tipagem dos objetos em tempo <strong>de</strong> compilação, <strong>de</strong>vemos aplicar o recurso doGenerics. Com este recurso po<strong>de</strong>mos <strong>de</strong>terminar o tipo <strong>de</strong> objeto que queremos armazenar em umacoleção no momento em que ela é criada. A partir daí, o compilador não permitirá que elementosnão compatíveis com o tipo escolhido sejam adicionados na coleção. Isso garante o tipo do elementono momento em que ele é recuperado da coleção e elimina a necessida<strong>de</strong> <strong>de</strong> casting.1 Collection < String > colecao = new HashSet < String >() ;23 colecao . add (" Rafael Cosentino ");45 for ( String x : colecao ) {6 System . out . println (x. toUpperCase ());7 }Código Java 18.24: Coleção com GenericsExercícios <strong>de</strong> Fixação5 Vamos testar o <strong>de</strong>sempenho do for tradicional e do foreach.1 import java . util . LinkedList ;2 import java . util . List ;34 public class TestaContains {5 public static void main ( String [] args ) {6 LinkedList < Integer > linkedList = new LinkedList < Integer >() ;7 int size = 100000;89 for ( int i = 0; i < size ; i ++) {10 linkedList . add (i);11 }1213 long tempo = TestaContains . forTradicional ( linkedList );14 System . out . println (" For Tradicional : " + tempo + "ms");www.<strong>k19</strong>.com.br 159

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!