27
Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc. edu.br) Março/ 2015

Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro ([email protected]) Março/ 2015

Embed Size (px)

Citation preview

Page 1: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Principais Pacotes e Coleções

Ms. Bruno Crestani Calegaro ([email protected])Março/ 2015

Page 2: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Pacotes em JavaO que são pacotes? Um pacote (package) em Java é um diretório em que está

armazenada uma ou mais classes

Para usar uma classe de um pacote se usa a palavra reservada import

Exemplo:import java.util.Vectorimport java.util.*

A diferença do primeiro comando pelo segundo é que podemos utilizar uma classe específica (Date) no primeiro

No segundo caso o * significa que podemos utilizar todas as classes que estiverem no pacote

Page 3: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

O pacote java.langPor padrão o pacote java.lang é importado

automaticamente pelo Java

Nele estão as classes que representam os tipos primitivos: Integer, Float, Boolean, Byte, Caracter, String, Math,

Object, System, Thread, entre outros

Strings em Java são representadas pela classe java.lang.String

Na classe das strings existem diversos métodos que podem manipulá-las de diversas maneiras

Page 4: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

java.lang.StringExemplos de métodos:

lenght()

charAt()

toUpperCase() e toLowerCase()

substring()

trim()

replace()

string.valueOf()

split()

equals()

Page 5: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

java.lang.MathEssa classe contém diversos métodos para

lidar com diferentes tipos de cálculos matemáticos

Exemplos de métodos:min() e max()random()

Page 6: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Classes WrapperSão as classes que representam os tipos

primitivos:Integer, Double, Byte, etc

Essas classes contém diversos métodos para manipular os respecitos tipos

Suas funções mais utilizadas são:parseInt(), parseDouble(), etctoString()

Page 7: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

O pacote java.utilNesse pacote existem uma série de classes

úteis

Uma exemplo é a classe Calendar, para lidar com datas, a classe ArrayList e Vector, para lidar com listas, as classes Formatter, Scanner, Stack, Timer, entre outras.

Page 8: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Coleções

Coleções (estruturas de dados) são encontradas em qualquer linguagem de programação e em Java as coleções recebem um tratamento especial

O framework “Collections” surgiu com a intenção de formar uma arquitetura unificada para representação e manipulação de coleções.

Esse framework é o conjunto de implementações (classes e interfaces) oferecidas no pacote java.util que fornecem as principais funcionalidades esperadas quando trabalha-se com conjuntos de elementos (coleções).

Page 9: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Coleções

O uso de coleções facilitam a vida do programador do Java porque diferente de outras linguagens como o C, ele já conta todas funcionalidades implementadas, ou seja, o programado não precisa fazer a sua própria Lista, Fila ou Árvore.

Ao utilizarmos as coleções já implementadas obtemos os seguintes benefícios:

✔ Redução na codificação: Muitas funcionalidades esperadas durante a manipulação de um conjunto de elementos já estão prontas;

✔ Melhor desempenho do programa: As implementações das uncionalidades e estruturas de armazenamento foram feitas com o objetivo de fornecerem um desempenho ótimo;

✔ Maior qualidade do programa: Respeitando as interfaces podemos substituir as implementações utilizadas sem prejuízo ao resto doprograma;

Page 10: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Coleções

Arquitetura:

Page 11: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Coleções

Nesta figura temos as interfaces (raízes e nós das árvores) que formam o conjunto de interfaces disponíveis. Nas folhas (retângulos com bordas mais espessas) encontramos as classes concretas ou implementações destas interfaces.

Esta arquitetura de interfaces forma o núcleo do Java Framework Collections e todas as classes concretas irão derivar de uma ou mais interfaces.

É interessante notar que apesar da “arquitetura única” as coleções derivadas da interface Map não implementam a interface Collection no entanto elas também fazem parte do pacote de implementações Java para coleções.

A figura apresentada pode ser interpretada da seguinte forma: “Um Set, List ou Queue é um tipo de Collection, cada um com suas particularidades. Já um Map não é do mesmo tipo dos demais mas também manipula coleções de elementos”

Page 12: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Coleções

Set: Representa uma coleção que não pode conter duplicatas, implementa uma abstração dos conjuntos matemáticos;

List: Representa uma coleção ordenada (ordem de inserção) e que permite duplicatas;

Queue: Parecida com a interface List porém adiciona algumas funcionalidades, é muito utilizada para representar listas de elementos cuja ordem é importante, normalmente elementos em ordem de processamento;

Map: É um objeto que armazena um elemento e o remove através da sua chave, os Maps não aceitam chaves duplicadas.

Page 13: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Coleções

Algumas definições:

Ordenação: Define que a coleção possui algum tipo de ordem determinada por regra(s).• Ex: Crescente, decrescente, prioridade e etc.

Organização: Garante que a coleção sempre é percorrida em uma determinada seqüência não aleatória.• Ex: Ordem de inserção, índice e etc.

Page 14: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

List

A interface List garante que todas as suas implementações serão organizadas, isto é, a ordem de inserção será mantida e são permitidas duplicatas, isto é, objetos iguais de acordo com o método equals().

Ao contrário do Set, qualquer implementação da interface List mantém seus elementos indexados, ou seja, existe uma preocupação com o posicionamento de cada elemento e esta posição é determinada pelo índice.

Devemos utilizar um List quando a ordem de inserção ou a posição na coleção nos interessa

Page 15: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

List

Alguns métodos importantes quando manipulamos Lists:

Page 16: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

ArrayList e Vector

Um ArrayList pode ser visto como um vetor (array) porém dinâmico, isto é, ele aumenta o espaço disponível a medida que é demandado. Ele é organizado pelo índice, ou seja, temos alguma garantia quanto a ordem que encontraremos os elementos.

Vector é basicamente um ArrayList, no entanto seus métodos são sincronizados o que significa que o acesso por vários processos simultaneamente é coordenado.

Antes de continuarmos falando das implementações da interface List, iremos introduzir uma nova característica da linguagem Java e mostrar trechos de códigos que a utilizam junto com ArrayList e Vector:• Generics: É uma funcionalidade introduzida a partir da versão

1.5 do Java. Em relação as coleções sua principal característica é definir o tipo aceito pela coleção;

Page 17: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

ArrayList e Vector

Até agora as nossas coleções aceitavam qualquer tipo de elemento, desde que fosse um Object, por exemplo, abaixo temos um ArrayList onde adicionamos uma String e um Integer:

Isto era possível pois nossas coleções aceitam qualquer elemento que seja do tipo Object, e todas as classes criadas em Java automaticamente herdam, e portanto são, da classe Object.

Page 18: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

ArrayList e Vector

No entanto, com o uso de Generics podemos definir de que tipo específico será a nossa coleção. Abaixo temos um exemplo de ArrayList, parecido com o anterior, utilizando Generics:

Perceba que a partir de agora este List aceita apenas objetos do tipo Integer utilizando esta notação, declaração <Integer> junto a declaração da Classe/Interface, evito que sejam inseridos indevidamente outros tipos que não sejam Integer na minha coleção

Page 19: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Queue

A última das interfaces a ser analisada, a interface Queue é projetada para armazenar listas de elementos a serem executados/processados.

Os elementos inseridos em uma coleção que implemente esta interface, normalmente, possuirá comportamento similar a uma Fila, isto é, o primeiro elemento a ser inserido será o primeiro elemento a ser processado.

Page 20: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Queue

Os métodos comumente utilizados com esta coleção são os seguintes:

Page 21: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

A classe Collections

Da mesma forma que para vetores, Java fornece uma classe com um conjunto de funcionalidades muito utilizadas (ordenação, pesquisa, preenchimento e etc.) na manipulação das estruturas de dados do Framework Collections também existe uma classe similar

Algumas funcionalidades úteis:• Ordenação• Mistura/ Desordenação• Pesquisa• Entre outras: reverse, fill, swap, addAll, frequency, disjoint.

Page 22: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

A classe Collections

Ordenação• O algoritmo de ordenação implementado na classe

Collections ordena os elementos em ordem ascendente.

Page 23: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

A classe Collections

Mistura/Desordenação• Este algoritmo é o oposto ao anterior, ao invés de ordenar

ele desordena (mistura) os elementos dentro de um List. A primeira vista pode parecer pouco útil, mas existem situações onde você irá querer desordenar sua estrutura de dados para obter um elemento aleatoriamente.

• Por exemplo, abaixo temos uma possível implementação para a modalidade de sorteio cujos nomes dos elementos a serem sorteados, normalmente pessoas, são escritos em pequenos pedaços de papéis e o primeiro a ser escolhido é o vencedor.

Page 24: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

A classe Collections

Mistura/Desordenação

Page 25: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

A classe Collections

Pesquisa• Quando falamos em estruturas de dados obrigatoriamente

devemos pensar em algoritmos de ordenação e pesquisa, pois, de que adianta uma estrutura de dados cujos elementos não conseguimos localizar? Ao manipularmos estruturas de dados sempre devemos ter em mente que iremos ordená-las ou pesquisá-las.

• Por isto a importância deste algoritmo. A pesquisa efetuada pela Classe Collections retorna um número inteiro positivo ou zero se o elemento for encontrado e negativo se o elemento não existe na coleção. Quando o elemento existe na coleção o número representa o seu índice (posição), por outro lado, quando o elemento não existe, o número, em módulo, representa a posição que ele deveria estar (ponto de inserção), neste caso, esta posição somente é válida se a coleção estiver ordenada antes da pesquisa.

Page 26: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

A classe Collections

Pesquisa

Page 27: Principais Pacotes e Coleções Ms. Bruno Crestani Calegaro (bruno.calegaro@ifsc.edu.br) Março/ 2015

Referência

•Curso Java Starter Disponível gratuitamente em:http://t2ti.com/curso/video/java/basico/java_starter.php

• Programação em Java – Uma introdução Abrangente• Shildt, H., Skrien, D

• Programação com Java• Hubbard. H