Sie sind auf Seite 1von 19

Array, ArrayList e LinkedList

Carlos Barreto
Anlise e Desenvolvimento de Sistemas
Projeto de Desenvolvimento de Software 310-4

Estrutura de dados

Faculdade Leo Sampaio


leaosampaio.edu.br

Agenda

Conceitos
Diferenas entre Array e ArrayList
Implementao de ambas as estruturas

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Array x ArrayList
Basicamente, assim:
Array tem um tamanho fixo, desde que o objeto
criado, e esse tamanho imutvel.

String[] array = new String[3];


Esse Array de String SEMPRE vai ter 3 posies,
independente se todas esto ocupadas ou no.
Anlise e Desenvolvimento de Sistemas
Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Array x ArrayList
Basicamente, assim:
ArrayList no, ela tem o tamanho exato de quantos
componentes ela tiver.

ArrayList arrayList = new ArrayList();


Ele tem zero posies. A medida em que itens
so adicionados, ela cresce, ou diminui ao se
retirar itens, com os mtodos add() e remove()
Anlise e Desenvolvimento de Sistemas
Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Array x ArrayList
Demonstrao grfica:

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Array x ArrayList
Importante:
Array pode ser de tipos primitivos, uma ArrayList
no.
ArrayList s pode conter objetos, se voc precisar de
uma ArrayList de um tipo primitivo, vai precisar de
uma das classes que os representam

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Array x ArrayList
Exemplos:
//Esse est certo
int[] ints = new int[20];
//Tambm
ArrayList<String> strings = new ArrayList<String>();
//Esse est errado
ArrayList<int> ints2 = new ArrayList<int>();
//O correto assim:
ArrayList<Integer> ints3 = new ArrayList<Integer>()
Anlise e Desenvolvimento de Sistemas
Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Entendendo a classe ArrayList


A classe ArrayList uma implementao de Array
redimensionvel da interface List.

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Entendendo a classe ArrayList


Alguns dos mtodos mais utilizados
add = Adiciona um objeto ao participante do ArrayList.
get = recupera o objeto na posio n.
clear = Remove todos os elementos a ArrayList.
clone = Cria uma cpia superficial do ArrayList.
contains = Determina se um elemento no ArrayList.
insert = Insere um elemento a ArrayList no ndice
especificado.
remove = Remove a primeira ocorrncia de um objeto
especfico a ArrayList.
Anlise e Desenvolvimento de Sistemas
Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Entendendo a classe ArrayList


Alguns dos mtodos mais utilizados (CONTINUAO)
removeAt
= Remove o elemento no ndice
especificado do ArrayList.
repeat = Retorna um ArrayList cujos elementos so cpias do
valor especificado.
toString = Retorna um String que representa o corrente
Object.
size = retorna o nmero de elementos.
set = sobrescreve o objeto na posio n com o objeto obj.
Anlise e Desenvolvimento de Sistemas
Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Entendendo a classe ArrayList


Resumindo
O ArrayList nada mais do que uma sequncia de objetos e
suas propriedades so:
Armazena referncias a Object;
Aumenta a capacidade interna conforme necessrio;
Mantm os objetos em ordem de insero;
As posies dos elementos so iniciadas em zero.

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Colees
Benefcios na utilizao de colees:

Reduz o esforo de programao;


Aumenta a velocidade e qualidade de programao;
Permite interoperabilidade entre APIs;
Reduz o esforo para aprender e usar uma nova API;
Reduz o esforo no projeto de uma nova API;
Favorece o reuso de programas.

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

As interfaces de colees

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Referenciais

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Colees
Collection o elemento raiz que representa um
grupo de
objetos conhecidos como seus
elementos.
Set uma coleo que no contm elementos
duplicados.
List uma coleo ordenada podendo conter
elementos duplicados.
Queue uma coleo usada para armazenar
elementos para um processamento. Pode ser FIFO
(Fist Input Fist Output).
Anlise e Desenvolvimento de Sistemas
Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Colees
Map mapeia um objeto a uma chave.
SortedSet uma Set que mantm seus elementos
em ordem crescente.
SortedMap um Map que mantm seus elementos
em ordem crescente.

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Sobre LinkedList
LinkedList - Ta ai uma classe que me chamou
muito ateno, em relao as demais ela
considerada a mais rpida em aspectos de
Insero e Interao. Mas se voc necessita
apenas recuperar dados para exibio, deixando de
lado a alterao e excluso LinkedList a
melhor.
ArrayList Provavelmente a mais utilizada e
conhecida por todos, e considerada a mais
adequada se voc precisa realizar acessos
de ndice (Acesso Aleatrio).
Anlise e Desenvolvimento de Sistemas
Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Referenciais

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br

Referenciais

http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html,
acessado em 22 de agosto de 2013.
Trabalho ArrayList - Maicon Feder. http://javafamesul.blogspot.com.br/2010/12/trabalho-arraylist-maicon-feder.html,
acessado em 22 de agosto de 2013.
http://javarequest.wordpress.com/tag/arraylist-vs-linkedlist/, acessado
em 01 de setembro de 2014.
http://www.devmedia.com.br/diferenca-entre-arraylist-vector-elinkedlist-em-java/29162, acessado em 28 de agosto de 2014.

Anlise e Desenvolvimento de Sistemas


Projeto de Desenvolvimento de Software 310-4

Faculdade Leo Sampaio


leaosampaio.edu.br