arraylist e genéricos
DESCRIPTION
ArrayList e Genéricos. Profs. PROG2 - UNISINOS. ArrayList. Implementação de Lista Sequencial pela API do Java Vantagem: Podem crescer (serem redimensionadas) Arrays não podem import java.util.ArrayList; Veja http://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html. ArrayList. - PowerPoint PPT PresentationTRANSCRIPT
ArrayList e Genéricos
Profs. PROG2 - UNISINOS
1
ArrayList
Implementação de Lista Sequencial pela API do Java
Vantagem: Podem crescer (serem redimensionadas)
Arrays não podem
import java.util.ArrayList; Veja
http://java.sun.com/j2se/1.5.0/docs/api/java/util/ArrayList.html
2
ArrayList
Desvantagens:1. Menos eficiente que array2. Só trabalha com objetos (e não com tipos
básicos) Pode-se ter um ArrayList de Integer, mas não se
pode ter um ArrayList 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):
Unboxing e Outboxing
3
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 i2 = i; Unboxing:
Converte objeto numérico para tipo básico Ex: de Integer para int
Integer i2 = new Integer(0);
int i = i2;
4
Classe ArrayList Define um ArrayList de Strings:
ArrayList<String> list = new ArrayList<String>(); Capacidade inicial default é 10.
Define um ArrayList de Aluno:
ArrayList<Aluno> empList= new ArrayList<Aluno>( 20 );
Capacidade inicial é 20.
5
Classe ArrayList Substituindo (ou setando) um elemento em
uma determinada posição:
list.set( 12, “Hi, Mom.” );
Retornando um elemento de uma posição:
System.out.println( list.get( 12 ) ); String s = list.get( 5 );
6
Classe ArrayList Inserindo um elemento no final do ArrayList
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.
7
ArrayList class
Inserindo um elemento em uma determinada posição 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.
8
Classe ArrayList 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 ArrayList
10
Métodos da classe ArrayList public ArrayList<Base_Type>( int
initialCapacity )
public ArrayList<Base_Type>() Capacidade inicial default é 10 Ex: ArrayList<String> list = new ArrayList<String>();
11
Métodos da classe ArrayList Métodos “Array-like”
public Base_Type set ( int index, Base_Type newElement ) Onde 0<=index<size() (ou exceção) Ex: String s = list.set (0, “caderno”);
public Base_Type get ( int index ) Onde 0<=index<size() (ou exceção) Ex: String s = list.get(0);
12
Métodos da classe ArrayList Métodos para adicionar elementos
public boolean add ( Base_Type newElement ) Adiciona o novo elemento no final size() cresce em 1 Capacidade aumenta se necessário Ex: boolean b = list.add(“caneta”);
13
Métodos da classe ArrayList Métodos para adicionar elementos
public void add ( int index, Base_Type newElement ) 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”);
14
Métodos da classe ArrayList Métodos para remover elementos
public Base_Type remove ( int index ) 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);
15
Métodos da classe ArrayList
Methods to remove elements public boolean remove( Object theElement )
Se encontrada, remove a primeira ocorrência de theElement; copia para a esquerda os elementos restantes; size() se torna size()-1; Retorna true.
Se não encontrada, retorna false. Ex: boolean b = list.remove(“caneta”);
public void clear ( ) Remove todos os elementos;
size() se torna 0 Ex: list.clear ();
16
Métodos da classe ArrayList Métodos de Procura
public boolean contains ( Object target ) Chama o método equals() de target True se ArrayList contém target; false caso contrário. Ex: boolean b = list.contains(“caneta”);
public int indexOf ( Object target ) Chama o método equals() de target Retorna índice (posição) da primeira ocorrência de
target em ArrayList; -1 caso contrário. Ex: int pos = list.indexOf(“caneta”);
public int lastIndexOf ( Object target ) Realiza o mesmo que o anterior, com a diferença que é
retornada a posição da última ocorrência. Ex: int pos = list.lastIndexOf(“caneta”);
17
Métodos da classe ArrayList Gerenciamento da memória (tamanho &
capacidade) public boolean isEmpty ( )
True se vazio; false caso contrário. Ex: boolean b = list.isEmpty();
public int size ( ) Retorna número de elementos (nós) em ArrayList Ex: int tam = list.size();
public void ensureCapacity ( int newCapacity ) Aumenta a capacidade (se necessário) Ex: list. ensureCapacity(20);
public void trimToSize ( ) Reduz a capacidade para tamanho atual Ex: list. trimToSize();
18
Métodos da classe ArrayList
Para cópia public Object[] toArray ( )
Retorna um array contendo os elementos da lista. Ex: Object[] v = list.toArray();
public Object clone ( ) Retorna uma cópia de ArrayList. Ex: Object v = list.clone();
19
Métodos da classe ArrayList Igualdade
public boolean equals ( Object other ) 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(list2);
20
for-each loop
for (Array_Base_Type var : Collection_Object)
Statement;
Se myList for ArrayList de Strings.for (String element : myList)
System.out.println( element );
21
for-each loop for-each também funciona com arrays:
// Retorna o soma dos elementos de aint sum ( int[] a ) {
int result = 0;for (int item : a)
result += item;return result;
}
22
23
Biblioteca Java Classes da biblioteca Java que implementam listas em Java:
java.util.Vector java.util.ArrayList (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 ArrayList
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.html