Array List e Genricos Profs PROG 2 UNISINOS

  • Slides: 23
Download presentation
Array. List e Genéricos Profs. PROG 2 - UNISINOS 1

Array. List e Genéricos Profs. PROG 2 - UNISINOS 1

Array. List Implementação de Lista Sequencial pela API do Java Vantagem: Podem crescer (serem

Array. List Implementação de Lista Sequencial pela API do Java Vantagem: Podem crescer (serem redimensionadas) 2 Arrays não podem import java. util. Array. List; Veja http: //java. sun. com/j 2 se/1. 5. 0/docs/api/java/util/Array. List. html

Array. List Desvantagens: 1. 2. Menos eficiente que array Só trabalha com objetos (e

Array. List Desvantagens: 1. 2. Menos eficiente que array Só trabalha com objetos (e não com tipos básicos) Pode-se ter um Array. List de Integer, mas não se pode ter um Array. List de int. A partir da versão 1. 5, isso não é mais um problema por causa da conversão automática de classes Wrappers (Integer, Double, Character, etc) para seus tipos primitivos (int, double, char): 3 Unboxing e Outboxing

Conversão de Tipo Primitivo para seu Wrapper Conversão realizada entre os objetos numéricos (Integer,

Conversão de Tipo Primitivo para seu Wrapper Conversão realizada entre os objetos numéricos (Integer, Float) e o correspondente tipo primitivo de dado (integer, float). Tipo primitivo de dado = tipo básico A partir da versão Java 5. 0 é automática (implícita) Autoboxing: Converte tipo básico para objeto numérico Ex: de int para Integer int i = 10; Integer i 2 = i; Unboxing: Converte objeto numérico para tipo básico Ex: de Integer para int Integer i 2 = new Integer(0); int i = i 2; 4

Classe Array. List Define um Array. List de Strings: Array. List<String> list = new

Classe Array. List Define um Array. List de Strings: Array. List<String> list = new Array. List<String>(); Capacidade inicial default é 10. Define um Array. List de Aluno: Array. List<Aluno> emp. List = new Array. List<Aluno>( 20 ); 5 Capacidade inicial é 20.

Classe Array. List Substituindo (ou setando) um elemento em uma determinada posição: list. set(

Classe Array. List Substituindo (ou setando) um elemento em uma determinada posição: list. set( 12, “Hi, Mom. ” ); Retornando um elemento de uma posição: 6 System. out. println( list. get( 12 ) ); String s = list. get( 5 );

Classe Array. List Inserindo um elemento no final do Array. List 7 list. add(

Classe Array. List Inserindo um elemento no final do Array. List 7 list. add( “One” ); list. add( “Two” ); list. add( “Three” ); “One” está na posição 0, “Two” está na posição 1, e “Three” está na posição 2.

Array. List class Inserindo um elemento em uma determinada posição 8 i deve ser

Array. List class Inserindo um elemento em uma determinada posição 8 i deve ser uma posição usada ou a primeira posição livre list. add( “One” ); list. add( “Two” ); list. add( “Three” ); list. add( 1, “Fred” ); “One” está na posição 0, “Fred” está na posição 1, “Two” está na posição 2, e “Three” está na posição 3.

Classe Array. List Retornando tamanho da lista (quantidade de nós na lista): Método size()

Classe Array. List Retornando tamanho da lista (quantidade de nós na lista): Método size() for (int i=0; i<list. size(); i++) { System. out. println( list. get(i) ); } 9

Métodos da classe Array. List 10

Métodos da classe Array. List 10

Métodos da classe Array. List public Array. List<Base_Type>( int initial. Capacity ) public Array.

Métodos da classe Array. List public Array. List<Base_Type>( int initial. Capacity ) public Array. List<Base_Type>() 11 Capacidade inicial default é 10 Ex: Array. List<String> list = new Array. List<String>();

Métodos da classe Array. List Métodos “Array-like” public Base_Type set ( int index, Base_Type

Métodos da classe Array. List Métodos “Array-like” public Base_Type set ( int index, Base_Type new. Element ) Onde 0<=index<size() (ou exceção) Ex: String s = list. set (0, “caderno”); public Base_Type get ( int index ) 12 Onde 0<=index<size() (ou exceção) Ex: String s = list. get(0);

Métodos da classe Array. List Métodos para adicionar elementos public boolean add ( Base_Type

Métodos da classe Array. List Métodos para adicionar elementos public boolean add ( Base_Type new. Element ) 13 Adiciona o novo elemento no final size() cresce em 1 Capacidade aumenta se necessário Ex: boolean b = list. add(“caneta”);

Métodos da classe Array. List Métodos para adicionar elementos public void add ( int

Métodos da classe Array. List Métodos para adicionar elementos public void add ( int index, Base_Type new. Element ) 14 0<=index<=size() Onde se index==size(), insere no final size() cresce em 1 Capacidade aumenta se necessário Quando 0<=index<size(), elemento na posição index é movido para index+1, na index+1 é movido para index+2, …, na size()-1 é movido para size() Ex: list. add(0, “caneta”);

Métodos da classe Array. List Métodos para remover elementos public Base_Type remove ( int

Métodos da classe Array. List Métodos para remover elementos public Base_Type remove ( int index ) 15 0<=index<size() (ou exceção) Remove o elemento na posição index; copia para as posições à esquerda os elementos restantes em index+1 … size()-1. Ex: String s = list. remove(2);

Métodos da classe Array. List Methods to remove elements public boolean remove( Object the.

Métodos da classe Array. List Methods to remove elements public boolean remove( Object the. Element ) Se encontrada, remove a primeira ocorrência de the. Element; copia para a esquerda os elementos restantes; Se não encontrada, retorna false. Ex: boolean b = list. remove(“caneta”); public void clear ( ) Remove todos os elementos; 16 size() se torna size()-1; Retorna true. size() se torna 0 Ex: list. clear ();

Métodos da classe Array. List Métodos de Procura public boolean contains ( Object target

Métodos da classe Array. List Métodos de Procura public boolean contains ( Object target ) Chama o método equals() de target True se Array. List contém target; false caso contrário. Ex: boolean b = list. contains(“caneta”); public int index. Of ( Object target ) public int last. Index. Of ( Object target ) 17 Chama o método equals() de target Retorna índice (posição) da primeira ocorrência de target em Array. List; -1 caso contrário. Ex: int pos = list. index. Of(“caneta”); Realiza o mesmo que o anterior, com a diferença que é retornada a posição da última ocorrência. Ex: int pos = list. last. Index. Of(“caneta”);

Métodos da classe Array. List Gerenciamento da memória (tamanho & capacidade) public boolean is.

Métodos da classe Array. List Gerenciamento da memória (tamanho & capacidade) public boolean is. Empty ( ) public int size ( ) Aumenta a capacidade (se necessário) Ex: list. ensure. Capacity(20); public void trim. To. Size ( ) 18 Retorna número de elementos (nós) em Array. List Ex: int tam = list. size(); public void ensure. Capacity ( int new. Capacity ) True se vazio; false caso contrário. Ex: boolean b = list. is. Empty(); Reduz a capacidade para tamanho atual Ex: list. trim. To. Size();

Métodos da classe Array. List Para cópia public Object[] to. Array ( ) public

Métodos da classe Array. List Para cópia public Object[] to. Array ( ) public Object clone ( ) 19 Retorna um array contendo os elementos da lista. Ex: Object[] v = list. to. Array(); Retorna uma cópia de Array. List. Ex: Object v = list. clone();

Métodos da classe Array. List Igualdade public boolean equals ( Object other ) 20

Métodos da classe Array. List Igualdade public boolean equals ( Object other ) 20 Verdadeiro somente se ambos possuem o mesmo número de elementos e os mesmos elementos (na mesma ordem). Compara cada par de elementos chamando seu método equals() Ex: boolean b = list. equals(list 2);

for-each loop for (Array_Base_Type var : Collection_Object) Statement; Se my. List for Array. List

for-each loop for (Array_Base_Type var : Collection_Object) Statement; Se my. List for Array. List de Strings. for (String element : my. List) System. out. println( element ); 21

for-each loop for-each também funciona com arrays: // Retorna o soma dos elementos de

for-each loop for-each também funciona com arrays: // Retorna o soma dos elementos de a int sum ( int[] a ) { int result = 0; for (int item : a) result += item; return result; } 22

Biblioteca Java Classes da biblioteca Java que implementam listas em Java: java. util. Vector

Biblioteca Java Classes da biblioteca Java que implementam listas em Java: java. util. Vector java. util. Array. List (desde versão 1. 2) Qual a diferença? Vector é sincronizado, assim todos os métodos da classe Vector são thread-safe (garante integridade dos dados quando mais de uma thread acessa). Sincronização tem um custo na performance, assim quando não é necessário sincronizar, melhor usar Array. List Maiores explicações em: http: //www. javaworld. com/javaworld/javaqa/2001 -06/03 -qa-0622 -vector. html http: //www. onjava. com/pub/a/onjava/2001/05/30/optimization. ht ml 23