Upload
luiz-henrique-morais-silva
View
220
Download
0
Embed Size (px)
Citation preview
8/3/2019 Pro028 - Aula 2 Tap
1/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
REVISO COLLECTIONS: HashMap, TreeMap e Properties.
java.util.Map
Esta interface define objetos que mapeiam chaves e valores, onde as chaves nopodem ser duplicadas, mas os valores sim.
Desta forma, no h nenhuma restrio especifica ao valor null, exceto pelo fato quea condio de chaves no repetidas seja respeitada, isto , possvel adicionar apenasuma chave igual a null e quantos valores null forem necessrios.
A interface oferece trs visualizaes distintas de um MAP:
As chaves podem ser visualizadas como um objeto do tipo Set; Os valores podem ser vistos como uma coleo de objetos; Conjunto (objeto do tipo Set) de pares chaves-valor.
1
8/3/2019 Pro028 - Aula 2 Tap
2/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
Hierarquia
java.util.HashMap
HashMap uma implementao da interface Map, que ocorre atravs da classeabstrata AbstractMap. No garante a ordem dos seus elementos, nem que estarosempre na mesma ordem.
Esta classe no synchronized, sendo esta a principal diferena da classe HashTable,que faz parte do JDK desde a verso 1.0.
A classe HashMap permite a insero de null, mas vale lembrar que a chave deve sernica, isto , apenas uma poder ser igual a null.
Construtores
HashMap (): Constri um HashMap vazio; HashMap (Map m): Constri um novo HashMap com todos os pares de chave-
valor do Map m.
HashMap (Map m): Constri um novo HashMap com todos os pares dechave-valor do Map m usando generics.
Adicionando um par chave-valor no HashMap
Object put (Object chave, object valor): Adiciona o par chave-valor aoHashMap.
2
8/3/2019 Pro028 - Aula 2 Tap
3/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
Verificando se o HashMap contem determinada chave-valor
boolean containskey (object key): Retorna true se foi encontrada a chave key: boolean containsValue (object value): Retorna true se foi encontrado o valor
value.
Recuperando um valor do HashMap
object get (object key): Retorna o valor associado chave (key) passada comoparmetro.
Obs: Caso a chave no seja encontrada, null ser retornado. No entanto, existe apossibilidade de haver uma chave associada ao valor null, portanto, MUITOimportante verificarmos se a chave existe no HashMap, atravs do mtodocontainsKey (object Key).
Removendo elementos do HashMap
object remove (object key): Remove o par chave-valor encontrado noHashMap.
Verificando o tamanho / numero de elementos do HasMap
int size (): Retorna o nmero de pares chave-valor encontrados no HashMap.
Exemplo Generics:
Pessoa.java
package br.com.tap.exemplo;
publicclass Pessoa implements Comparable {
privateString nome;
private String rg;
public Pessoa(String nome, String rg) {
this.setNome(nome);
this.setRg(rg);
}
public String getNome() {
returnnome;
}
publicvoidsetNome(String nome) {
3
8/3/2019 Pro028 - Aula 2 Tap
4/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
this.nome = nome;
}
public String getRg() {
returnrg;
}
publicvoidsetRg(String rg) {this.rg = rg;
}
@Override
public String toString() {
return"Pessoa [nome=" + nome + ", rg=" + rg
+ "]";
}
@Override
publicint compareTo(Object obj) {
Pessoa outraPessoa = (Pessoa)obj;
String dadosCompletos = this.nome + " " + this.rg;String outrosDadosCompletos = outraPessoa.nome + " " +
outraPessoa.rg;
return dadosCompletos.compareTo(outrosDadosCompletos);
}
}
ExemploHashMap.java
package br.com.tap.exemplo;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
publicclass ExemploHashMap {
publicstaticvoidmain(String[] args) {
//chave
String rg1 = "11111";Pessoa pessoa1 = new Pessoa("Fabio Rener",rg1);
//chave
String rg2 = "22222";
Pessoa pessoa2 = new Pessoa("Juliana Faria",rg2);
//chave
String rg3 = "33333";
Pessoa pessoa3 = new Pessoa("Camila Marcello",rg3);
//cria map com chave String e objeto Pessoa, adiciono todas as
pessoas no HashMap
Map pessoas = new HashMap();
pessoas.put(rg1, pessoa1);
pessoas.put(rg2, pessoa2);pessoas.put(rg3, pessoa3);
4
8/3/2019 Pro028 - Aula 2 Tap
5/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
//imprime todos os elementos do Map
imprimeMap(pessoas);
//remove um elemento pela sua chave
removeElemento(pessoas,rg2);
//imprime todos os elementos do Map
imprimeMap(pessoas);
}
//Metodo que imprime todos os elementos do Map recebido como parametro
publicstaticvoidimprimeMap(Map map){
//cria lista com chaves do MAP
Set chaves = map.keySet();
for (String rg : chaves) {
System.out.println("\n==Impressao do Map===============");
System.out.println("[Chave]: " + rg);
System.out.println(map.get(rg) + "\n");
}
}
//Metodo que remove todos um elemento do Map pela sua chave
publicstaticvoidremoveElemento(Map map,String chave){
Pessoa objRemovido = null;
if(map.containsKey(chave)){
System.out.println("\n==Removendo do Map===============");
objRemovido = map.remove(chave);
System.out.println("Valor Removido ===> " + objRemovido);
}
else{
System.out.println("Chave no encontrada no HashMap");
}}
}
Exemplo Sem Generics:
package br.com.tap.exemplo;
import java.util.HashMap;import java.util.Iterator;
import java.util.Map;
import java.util.Set;
publicclass ExemploHashMap2 {
publicstaticvoidmain(String[] args) {
//chave
String rg1 = "11111";
Pessoa pessoa1 = new Pessoa("Fabio Rener",rg1);
//chave
String rg2 = "22222";
Pessoa pessoa2 = new Pessoa("Juliana Faria",rg2);
5
8/3/2019 Pro028 - Aula 2 Tap
6/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
//chave
String rg3 = "33333";
Pessoa pessoa3 = new Pessoa("Camila Marcello",rg3);
//cria map com chave String e objeto Pessoa, adiciono todas as
pessoas no HashMap
Map pessoas = new HashMap();
pessoas.put(rg1, pessoa1);pessoas.put(rg2, pessoa2);
pessoas.put(rg3, pessoa3);
//imprime todos os elementos do Map
imprimeMap(pessoas);
//remove um elemento pela sua chave
removeElemento(pessoas,rg2);
//imprime todos os elementos do Map
imprimeMap(pessoas);
}
//Metodo que imprime todos os elementos do Map recebido como parametropublicstaticvoidimprimeMap(Map map){
//cria lista com chaves do MAP
Set chaves = map.keySet();
//Iterator da lista de chaves
Iterator i = chaves.iterator();
//loop na colecao
while (i.hasNext()) {
System.out.println("\n==Impressao do Map===============");
String element = (String)i.next();
System.out.println("[Chave]: " + element);
System.out.println(map.get(element) + "\n");
}
}
//Metodo que remove todos um elemento do Map pela sua chave
publicstaticvoidremoveElemento(Map map,String chave){
Pessoa objRemovido = null;
if(map.containsKey(chave)){
System.out.println("\n==Removendo do Map===============");
objRemovido = (Pessoa)map.remove(chave);
System.out.println("Valor Removido ===> " + objRemovido);
}
else{
System.out.println("Chave no encontrada no HashMap");
}
}
}
java.util.TreeMap
a outra classe da Framework Collection Java que classificada econsequentemente ordenada.
6
8/3/2019 Pro028 - Aula 2 Tap
7/11
8/3/2019 Pro028 - Aula 2 Tap
8/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
Exemplo Sem Generics:
ExemploTreeMap.java
package br.com.tap.exemplo;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
publicclass ExemploTreeMap2 {
publicstaticvoidmain(String[] args) {
Map map = new TreeMap();
//chave
String rg1 = "11111";
Pessoa pessoa1 = new Pessoa("Fabio Rener",rg1);
map.put(rg1,pessoa1);
//chave
String rg2 = "22222";
Pessoa pessoa2 = new Pessoa("Juliana Faria",rg2);
map.put(rg2,pessoa2);
//chave
String rg3 = "33333";
Pessoa pessoa3 = new Pessoa("Camila Marcello",rg3);
map.put(rg3,pessoa3);
imprimeMap(map);
}
//Metodo que imprime todos os elementos do Map recebido como parametro
publicstaticvoidimprimeMap(Map map){
//cria lista com chaves do MAP
Set chaves = map.keySet();
//Iterator da lista de chaves
Iterator i = chaves.iterator();
//loop na colecao
while (i.hasNext()) {
System.out.println("\n===Impressao do Map===============");String element = (String)i.next();
System.out.println("[Chave]: " + element);
System.out.println(map.get(element) + "\n");
}
}
}
8
8/3/2019 Pro028 - Aula 2 Tap
9/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
java.util.Properties
A classe java.util.Properties, presente desde a verso 1.0 do JDK, filha (extende) daclasse java.util.Hashtable e, por conseqncia, implementa a interface Map. Elaarmazena pares de valores, assim como a Hashtable, com uma diferena, ambos os
valores (chave e valor) so Strings.Nosso exemplo ser baseado na leitura de uma arquivos de propriedades que estardentro de nossa aplicao.
Exemplo:
CarregaPropriedades.java
package br.com.tap.exemplo;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
publicclass CarregaPropriedades {
private Properties props;
CarregaPropriedades(){
InputStream in =
this.getClass().getResourceAsStream("config.properties");
props = new Properties();
try {
//carrega os dados que esto no arquivo
props.load(in);
}
catch (IOException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
public Properties getProps() {
returnprops;
}
publicvoidsetProps(Properties props) {
9
8/3/2019 Pro028 - Aula 2 Tap
10/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
this.props = props;
}
}
ExemploProperties.java
package br.com.tap.exemplo;
import java.util.Enumeration;
import java.util.Properties;
publicclass ExemploProperties {
/**
* @paramargs
*/
publicstaticvoidmain(String[] args) {
CarregaPropriedades minhasPropriedades = new
CarregaPropriedades();
Properties props = minhasPropriedades.getProps();
imprimePropriedade(props);
}
publicstaticvoidimprimePropriedade(Properties p){
for(Enumeration elms = p.propertyNames();
elms.hasMoreElements();){
String prop = (String)elms.nextElement();
System.out.println(prop + ": " + p.getProperty(prop));
}
}
}
Exerccios de Fixao:
1) Crie uma lista classificada (TreeMap) para os dias da semana,(Domingo,Segunda,Tera,Quarta,Quinta,Sexta,Sbado), mostre os dados da
lista ?
10
8/3/2019 Pro028 - Aula 2 Tap
11/11
Tpicos Avanados de Programao - Ano:2011 Prof.Fbio Rener
11