SlideShare une entreprise Scribd logo
1  sur  27
Télécharger pour lire hors ligne
Programação Orientada a
Objetos
Professor Eng. Ms. Will Roger Pereira
1
Objetivos da Aula
 Estruturas de dados;
 Arrays (Vetores);
 Listas (ArrayList e LinkedList).
2
Estruturas de dados
 Até o presente momento, em Java, sabemos armazenar
somente uma unidade de informação por vez, em uma
variável;
 Em Java, uma variável possui tipo estático, podendo ser
armazenada nela somente um dado de determinado tipo;
 Esse tipo pode ser int, double, boolean, dentre outros, além
de objetos de qualquer classe existente no Java ou criada
pelo desenvolvedor.
3
Estruturas de dados
 A variável não é nada além de uma referência para uma
posição na memória do computador:
4
e1 teste c1
objeto true objeto
objeto 2 3.1415
p1 x pi
Estruturas de dados
 Variáveis permitirão o armazenamento somente de um dado;
 Para armazenar mais dados, é necessário criar mais
variáveis, o que gera um problema de controle nas
referências;
 Além disso, quando não se sabe exatamente a quantidade de
dados a ser armazenada, o problema é ainda maior, e fica
ainda mais inviável a utilização de variáveis.
5
Estruturas de dados
 Neste caso, as estruturas de dados podem ajudar a
armazenar mais dados, com todos possuindo uma única
referência;
 O que mudará de um dado para o outro será a sua posição
dentro da estrutura;
 Em Java, uma estrutura pode armazenar somente dados de
um único tipo, pré-definido em sua criação;
 Os tipos possíveis obedecem às mesmas regras dos tipos
das variáveis.
6
Vetores (Arrays)
 Vetores servem para armazenar uma quantidade fixa de
valores de um determinado tipo;
 Em Java, não é possível adicionar ou remover elementos de
um vetor. Pode-se apenas substituir seus elementos;
 Sua estrutura dentro da memória se dá de maneira
sequencial;
 Ex: Um vetor de números inteiros  {1, 2, 3, 4, 5};
7
1 2
3 4 5
Começo
Criação de Vetores
 Criação de um vetor não inicializado:
 tipo[] refvetor = new tipo[tamanho];
 *O vetor terá valores padrões dependendo do tipo.
 Ex: int[] vetor = new int[5];
 Criação de um vetor inicializado:
 tipo[] refvetor = new tipo[]{ele1, ele2, ..., eleN};
 *O vetor terá tamanho igual a quantidade de elementos
colocados;
 *Todos os valores deverão ser do mesmo tipo do vetor;
 Ex: int[] vetor = new int[]{1,2,3,4,5}.
8
Manipulação dos elementos de
um vetor
 Obtendo o elemento armazenado em uma posição:
 refvetor[pos];
 *0 <= pos < tamanho do vetor;
 Ex: vetor[3]  4.
 Mudando o elemento armazenado em uma posição:
 refvetor[pos] = valor;
 *0 <= pos < tamanho do vetor;
 *valor deve ser do mesmo tipo do vetor;
 Ex: vetor[3] = 10  {1, 2, 3, 10, 5};
9
Mostrando um vetor na tela
 Para mostrar um vetor na tela, proceda da seguinte maneira:
1. Importe a biblioteca java.util.Arrays;
2. Digite: System.out.println(Arrays.toString(REF. VETOR));
 Se o elemento do vetor for um objeto, Arrays.toString
invocará o método toString do objeto. 10
Vetores de objetos de uma classe
 Para criar objetos e utilizá-los na estrutura de um vetor, foi
criada uma classe chamada Cachorro e seu método
toString():
11
Vetores de objetos de uma classe
 Quando um vetor de objetos for criado, de maneira não
inicializada, todas as posições vão conter o valor nulo;
12
Vetores de objetos de uma classe
 Assim sendo, substitua as posições com os objetos
armazenados, sempre começando pelo índice 0. Basta
verificar qual posição é nula para adicionar;
 Adicionando 4 objetos no array:
13
Vetores de objetos de uma classe
 Para remover um objeto de uma posição, pegue todos os
objetos à direita dele e desloque uma posição para a
esquerda, partindo da posição removida.
 A última posição a possuir um objeto deverá ser modificado
para nulo;
 Porém, se o vetor estiver cheio, a condição acima não será
satisfeita. Assim sendo, veja se a repetição chegou ao final.
Se chegou, desloque o último objeto e coloque a última
posição como nulo.
14
Vetores de objetos de uma classe
15
Vetores de objetos de uma classe
 Resultado da remoção do elemento no índice 1:
 É de responsabilidade do desenvolvedor o gerenciamento da
estrutura de arrays;
 Com estas operações já é possível garantir a integridade da
estrutura.
16
Listas (LinkedList e ArrayList)
 Diferente dos vetores, listas servem para armazenar uma
quantidade variável de valores de um tipo;
 É possível adicionar ou remover elementos de uma lista, bem
como substituir o elemento de determinada posição;
 Sua estrutura dentro da memória é gerenciada através de
ponteiros, não necessitando de ser sequencial;
 Ex: Uma lista de números inteiros  (1, 2, 3, 4, 5);
17
4 5 1
3 2
Começo
Listas (LinkedList e ArrayList)
 Em Java, uma lista pode ser implementada via LinkedList ou
ArrayList;
 Estas vias possuem suas particularidades quanto a custo de
memória, implementação e custo para as operações, porém
são criadas de maneira semelhante e manipuladas de
maneira idêntica;
 Será demonstrada apenas a LinkedList, porém, caso queira
implementar uma ArrayList, basta somente substituir os
nomes das classes na criação. Os métodos mostrados aqui
são iguais para ambas implementações.
18
Importando classe LinkedList
 Para utilizar LinkedList, a primeira coisa a fazer é importar a
classe no começo do arquivo Java:
 Isto deve ser feito em qualquer arquivo que listas forem
manipuladas.
19
Criação de uma LinkedList
 Sintaxe:
 LinkedList<tipo> reflista = new LinkedList<tipo>();
 *tipo definirá qual tipo de dado poderá ser armazenado na
LinkedList  Tipos primitivos não podem ser usados;
 *Os tipos devem ser iguais: Da referência e da LinkedList
criada;
 A primeira posição possui índice 0.
20
Tipos da LinkedList
 Como uma LinkedList não pode conter tipos primitivos,
somente classes podem ser especificados como tipos;
 Porém, os tipos primitivos também possuem classes
correspondentes:
 int  Integer;
 double  Double;
 boolean  Boolean.
21
Mostrando a LinkedList na tela
 Para mostrar uma LinkedList na tela, proceda como se fosse
um objeto normal:
 A LinkedList já possui sua implementação de toString;
 Integer, Double e Boolean já possuem a implementação
correta do método toString;
 Os objetos presentes na LinkedList terão seus métodos
toString invocados. Portanto, sempre contrua-o.
22
Adicionando elementos em uma
LinkedList
 Para adicionar um elemento ao final da LinkedList:
 reflista.add(elemento);
 Ex: alunos.add(“João”);  [“João”];
 Ex: alunos.add(“Ana”);  [“João”, “Ana”];
 Ex: alunos.add(“João”);  [“João”, “Ana”, “João”];
 Para adicionar um elemento em uma posição específica:
 reflista.add(pos, elemento);
 *0 <= pos <= tamanho da lista.
 Ex: alunos.add(1, “Juca”);  [“João”, “Juca”, “Ana”, “João”];
 O elemento será inserido e todos os elementos posteriores serão
deslocados para direita.
23
Obtendo o tamanho de uma
LinkedList
 Para saber o tamanho de uma LinkedList:
 reflista.size();
 Ex: alunos.size();  4;
 Use o tamanho para controlar a LinkedList, e impedir que
posições inválidas sejam inseridas no sistema;
 Muito importante para verificar se determinada posição
possui um elemento para ser recuperado ou removido, ou se
é possível adicionar um elemento lá.
24
Recuperando elementos de uma
LinkedList
 Para recuperar um elemento de uma posição da LinkedList:
 reflista.get(pos);
 *0 <= pos < tamanho da lista.
 Ex: alunos.get(1);  “Juca”;
 Ex: alunos.get(2);  “Ana”;
25
Removendo elementos de uma
LinkedList
 Para remover um elemento de uma LinkedList por posição:
 reflista.remove(pos);
 *0 <= pos < tamanho da lista.
 Ex: alunos.remove(2);  [“João”, “Juca”, “João”];
 Para remover um elemento de uma LinkedList por elemento:
 reflista.remove(elemento);
 *Remove somente a primeira instância encontrada do elemento;
 Ex: alunos.remove(“João”);  [“Juca”, “João”];
 *Retorna true ou false se removeu ou não o elemento
respectivamente  Pode ser usado em verificações.
26
Estude e pratique este
conteúdo, uma vez que
estruturas de dados são peças
chave nos relacionamentos
interclasse.
27

Contenu connexe

Tendances (20)

Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
 
Aula7 diagrama classes
Aula7 diagrama classesAula7 diagrama classes
Aula7 diagrama classes
 
Programação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em JavaProgramação Orientada a Objetos - Uso da O.O. em Java
Programação Orientada a Objetos - Uso da O.O. em Java
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
padrao de projeto0
padrao de projeto0padrao de projeto0
padrao de projeto0
 
Aula 09 - introducao oo
Aula 09 - introducao ooAula 09 - introducao oo
Aula 09 - introducao oo
 
Aula4
Aula4Aula4
Aula4
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
Aula05
Aula05Aula05
Aula05
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
Java8
Java8Java8
Java8
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Java11
Java11Java11
Java11
 
Java6
Java6Java6
Java6
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 

En vedette

10 alocacao dinamica - listas ligadas
10   alocacao dinamica - listas ligadas10   alocacao dinamica - listas ligadas
10 alocacao dinamica - listas ligadasRicardo Bolanho
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 

En vedette (7)

Viagem para o sucesso 2
Viagem para o sucesso 2Viagem para o sucesso 2
Viagem para o sucesso 2
 
10 alocacao dinamica - listas ligadas
10   alocacao dinamica - listas ligadas10   alocacao dinamica - listas ligadas
10 alocacao dinamica - listas ligadas
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados - Ponteiros
Estrutura de Dados - PonteirosEstrutura de Dados - Ponteiros
Estrutura de Dados - Ponteiros
 

Similaire à Aula 2 2 (20)

Java: Collections
Java: CollectionsJava: Collections
Java: Collections
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Java
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
 
Java: strings e arrays
Java: strings e arraysJava: strings e arrays
Java: strings e arrays
 
Array list
Array listArray list
Array list
 
Array List
Array ListArray List
Array List
 
Slide Semana2 Rodrigo
Slide Semana2 RodrigoSlide Semana2 Rodrigo
Slide Semana2 Rodrigo
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
Java basico modulo_03
Java basico modulo_03Java basico modulo_03
Java basico modulo_03
 
Slide Share s2 Rodd
Slide Share s2 RoddSlide Share s2 Rodd
Slide Share s2 Rodd
 
Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2
 
Pged 04
Pged 04Pged 04
Pged 04
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
 
Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections Classes Java , JDBC / Swing / Collections
Classes Java , JDBC / Swing / Collections
 
8 collections-i
8 collections-i8 collections-i
8 collections-i
 
Vetores e Matrizes.pdf
Vetores e Matrizes.pdfVetores e Matrizes.pdf
Vetores e Matrizes.pdf
 
Java 12 Colecoes
Java 12 ColecoesJava 12 Colecoes
Java 12 Colecoes
 
Java básico
Java básicoJava básico
Java básico
 

Plus de Aparicio Junior

Mock test structure TOEFL ITP
Mock test structure TOEFL ITPMock test structure TOEFL ITP
Mock test structure TOEFL ITPAparicio Junior
 
Mock test reading TOEFL ITP
Mock test reading TOEFL ITPMock test reading TOEFL ITP
Mock test reading TOEFL ITPAparicio Junior
 
Mock Test Listening TOEFL ITP
Mock Test Listening TOEFL ITPMock Test Listening TOEFL ITP
Mock Test Listening TOEFL ITPAparicio Junior
 
General view of the TOEFL ITP
General view of the TOEFL ITPGeneral view of the TOEFL ITP
General view of the TOEFL ITPAparicio Junior
 
HERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVAHERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVAAparicio Junior
 
Banco de Dados - Junções Externas e internas
Banco de Dados - Junções Externas e internasBanco de Dados - Junções Externas e internas
Banco de Dados - Junções Externas e internasAparicio Junior
 
Aula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em JavaAula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em JavaAparicio Junior
 
Aula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em JavaAula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em JavaAparicio Junior
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHASAparicio Junior
 
Tutorial instalacão java
Tutorial instalacão javaTutorial instalacão java
Tutorial instalacão javaAparicio Junior
 

Plus de Aparicio Junior (20)

Tips For the TOELF ITP
Tips For the TOELF ITPTips For the TOELF ITP
Tips For the TOELF ITP
 
Mock test structure TOEFL ITP
Mock test structure TOEFL ITPMock test structure TOEFL ITP
Mock test structure TOEFL ITP
 
Mock test reading TOEFL ITP
Mock test reading TOEFL ITPMock test reading TOEFL ITP
Mock test reading TOEFL ITP
 
Mock Test Listening TOEFL ITP
Mock Test Listening TOEFL ITPMock Test Listening TOEFL ITP
Mock Test Listening TOEFL ITP
 
General view of the TOEFL ITP
General view of the TOEFL ITPGeneral view of the TOEFL ITP
General view of the TOEFL ITP
 
HERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVAHERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVA
 
Banco de Dados - Junções Externas e internas
Banco de Dados - Junções Externas e internasBanco de Dados - Junções Externas e internas
Banco de Dados - Junções Externas e internas
 
Lista 2 5
Lista 2 5Lista 2 5
Lista 2 5
 
Aula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em JavaAula sobre Programação Orientada a Objetos em Java
Aula sobre Programação Orientada a Objetos em Java
 
Lista 2 4
Lista 2 4Lista 2 4
Lista 2 4
 
Aula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em JavaAula Programação Orientada a Objetos em Java
Aula Programação Orientada a Objetos em Java
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
Tutorial instalacão java
Tutorial instalacão javaTutorial instalacão java
Tutorial instalacão java
 
Lista1 3 java
Lista1 3 javaLista1 3 java
Lista1 3 java
 
Lista 2 2 java
Lista 2 2 javaLista 2 2 java
Lista 2 2 java
 
Lista 2 1 java
Lista 2 1 javaLista 2 1 java
Lista 2 1 java
 
Lista 1 9 java
Lista 1 9 javaLista 1 9 java
Lista 1 9 java
 
Lista 1 8 java
Lista 1 8 javaLista 1 8 java
Lista 1 8 java
 
Lista 1 7 java
Lista 1 7 javaLista 1 7 java
Lista 1 7 java
 
Lista 1 6 java
Lista 1 6 javaLista 1 6 java
Lista 1 6 java
 

Aula 2 2

  • 1. Programação Orientada a Objetos Professor Eng. Ms. Will Roger Pereira 1
  • 2. Objetivos da Aula  Estruturas de dados;  Arrays (Vetores);  Listas (ArrayList e LinkedList). 2
  • 3. Estruturas de dados  Até o presente momento, em Java, sabemos armazenar somente uma unidade de informação por vez, em uma variável;  Em Java, uma variável possui tipo estático, podendo ser armazenada nela somente um dado de determinado tipo;  Esse tipo pode ser int, double, boolean, dentre outros, além de objetos de qualquer classe existente no Java ou criada pelo desenvolvedor. 3
  • 4. Estruturas de dados  A variável não é nada além de uma referência para uma posição na memória do computador: 4 e1 teste c1 objeto true objeto objeto 2 3.1415 p1 x pi
  • 5. Estruturas de dados  Variáveis permitirão o armazenamento somente de um dado;  Para armazenar mais dados, é necessário criar mais variáveis, o que gera um problema de controle nas referências;  Além disso, quando não se sabe exatamente a quantidade de dados a ser armazenada, o problema é ainda maior, e fica ainda mais inviável a utilização de variáveis. 5
  • 6. Estruturas de dados  Neste caso, as estruturas de dados podem ajudar a armazenar mais dados, com todos possuindo uma única referência;  O que mudará de um dado para o outro será a sua posição dentro da estrutura;  Em Java, uma estrutura pode armazenar somente dados de um único tipo, pré-definido em sua criação;  Os tipos possíveis obedecem às mesmas regras dos tipos das variáveis. 6
  • 7. Vetores (Arrays)  Vetores servem para armazenar uma quantidade fixa de valores de um determinado tipo;  Em Java, não é possível adicionar ou remover elementos de um vetor. Pode-se apenas substituir seus elementos;  Sua estrutura dentro da memória se dá de maneira sequencial;  Ex: Um vetor de números inteiros  {1, 2, 3, 4, 5}; 7 1 2 3 4 5 Começo
  • 8. Criação de Vetores  Criação de um vetor não inicializado:  tipo[] refvetor = new tipo[tamanho];  *O vetor terá valores padrões dependendo do tipo.  Ex: int[] vetor = new int[5];  Criação de um vetor inicializado:  tipo[] refvetor = new tipo[]{ele1, ele2, ..., eleN};  *O vetor terá tamanho igual a quantidade de elementos colocados;  *Todos os valores deverão ser do mesmo tipo do vetor;  Ex: int[] vetor = new int[]{1,2,3,4,5}. 8
  • 9. Manipulação dos elementos de um vetor  Obtendo o elemento armazenado em uma posição:  refvetor[pos];  *0 <= pos < tamanho do vetor;  Ex: vetor[3]  4.  Mudando o elemento armazenado em uma posição:  refvetor[pos] = valor;  *0 <= pos < tamanho do vetor;  *valor deve ser do mesmo tipo do vetor;  Ex: vetor[3] = 10  {1, 2, 3, 10, 5}; 9
  • 10. Mostrando um vetor na tela  Para mostrar um vetor na tela, proceda da seguinte maneira: 1. Importe a biblioteca java.util.Arrays; 2. Digite: System.out.println(Arrays.toString(REF. VETOR));  Se o elemento do vetor for um objeto, Arrays.toString invocará o método toString do objeto. 10
  • 11. Vetores de objetos de uma classe  Para criar objetos e utilizá-los na estrutura de um vetor, foi criada uma classe chamada Cachorro e seu método toString(): 11
  • 12. Vetores de objetos de uma classe  Quando um vetor de objetos for criado, de maneira não inicializada, todas as posições vão conter o valor nulo; 12
  • 13. Vetores de objetos de uma classe  Assim sendo, substitua as posições com os objetos armazenados, sempre começando pelo índice 0. Basta verificar qual posição é nula para adicionar;  Adicionando 4 objetos no array: 13
  • 14. Vetores de objetos de uma classe  Para remover um objeto de uma posição, pegue todos os objetos à direita dele e desloque uma posição para a esquerda, partindo da posição removida.  A última posição a possuir um objeto deverá ser modificado para nulo;  Porém, se o vetor estiver cheio, a condição acima não será satisfeita. Assim sendo, veja se a repetição chegou ao final. Se chegou, desloque o último objeto e coloque a última posição como nulo. 14
  • 15. Vetores de objetos de uma classe 15
  • 16. Vetores de objetos de uma classe  Resultado da remoção do elemento no índice 1:  É de responsabilidade do desenvolvedor o gerenciamento da estrutura de arrays;  Com estas operações já é possível garantir a integridade da estrutura. 16
  • 17. Listas (LinkedList e ArrayList)  Diferente dos vetores, listas servem para armazenar uma quantidade variável de valores de um tipo;  É possível adicionar ou remover elementos de uma lista, bem como substituir o elemento de determinada posição;  Sua estrutura dentro da memória é gerenciada através de ponteiros, não necessitando de ser sequencial;  Ex: Uma lista de números inteiros  (1, 2, 3, 4, 5); 17 4 5 1 3 2 Começo
  • 18. Listas (LinkedList e ArrayList)  Em Java, uma lista pode ser implementada via LinkedList ou ArrayList;  Estas vias possuem suas particularidades quanto a custo de memória, implementação e custo para as operações, porém são criadas de maneira semelhante e manipuladas de maneira idêntica;  Será demonstrada apenas a LinkedList, porém, caso queira implementar uma ArrayList, basta somente substituir os nomes das classes na criação. Os métodos mostrados aqui são iguais para ambas implementações. 18
  • 19. Importando classe LinkedList  Para utilizar LinkedList, a primeira coisa a fazer é importar a classe no começo do arquivo Java:  Isto deve ser feito em qualquer arquivo que listas forem manipuladas. 19
  • 20. Criação de uma LinkedList  Sintaxe:  LinkedList<tipo> reflista = new LinkedList<tipo>();  *tipo definirá qual tipo de dado poderá ser armazenado na LinkedList  Tipos primitivos não podem ser usados;  *Os tipos devem ser iguais: Da referência e da LinkedList criada;  A primeira posição possui índice 0. 20
  • 21. Tipos da LinkedList  Como uma LinkedList não pode conter tipos primitivos, somente classes podem ser especificados como tipos;  Porém, os tipos primitivos também possuem classes correspondentes:  int  Integer;  double  Double;  boolean  Boolean. 21
  • 22. Mostrando a LinkedList na tela  Para mostrar uma LinkedList na tela, proceda como se fosse um objeto normal:  A LinkedList já possui sua implementação de toString;  Integer, Double e Boolean já possuem a implementação correta do método toString;  Os objetos presentes na LinkedList terão seus métodos toString invocados. Portanto, sempre contrua-o. 22
  • 23. Adicionando elementos em uma LinkedList  Para adicionar um elemento ao final da LinkedList:  reflista.add(elemento);  Ex: alunos.add(“João”);  [“João”];  Ex: alunos.add(“Ana”);  [“João”, “Ana”];  Ex: alunos.add(“João”);  [“João”, “Ana”, “João”];  Para adicionar um elemento em uma posição específica:  reflista.add(pos, elemento);  *0 <= pos <= tamanho da lista.  Ex: alunos.add(1, “Juca”);  [“João”, “Juca”, “Ana”, “João”];  O elemento será inserido e todos os elementos posteriores serão deslocados para direita. 23
  • 24. Obtendo o tamanho de uma LinkedList  Para saber o tamanho de uma LinkedList:  reflista.size();  Ex: alunos.size();  4;  Use o tamanho para controlar a LinkedList, e impedir que posições inválidas sejam inseridas no sistema;  Muito importante para verificar se determinada posição possui um elemento para ser recuperado ou removido, ou se é possível adicionar um elemento lá. 24
  • 25. Recuperando elementos de uma LinkedList  Para recuperar um elemento de uma posição da LinkedList:  reflista.get(pos);  *0 <= pos < tamanho da lista.  Ex: alunos.get(1);  “Juca”;  Ex: alunos.get(2);  “Ana”; 25
  • 26. Removendo elementos de uma LinkedList  Para remover um elemento de uma LinkedList por posição:  reflista.remove(pos);  *0 <= pos < tamanho da lista.  Ex: alunos.remove(2);  [“João”, “Juca”, “João”];  Para remover um elemento de uma LinkedList por elemento:  reflista.remove(elemento);  *Remove somente a primeira instância encontrada do elemento;  Ex: alunos.remove(“João”);  [“Juca”, “João”];  *Retorna true ou false se removeu ou não o elemento respectivamente  Pode ser usado em verificações. 26
  • 27. Estude e pratique este conteúdo, uma vez que estruturas de dados são peças chave nos relacionamentos interclasse. 27