Você está na página 1de 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 no podem ser duplicadas, mas os valores sim. Desta forma, no h nenhuma restrio especifica ao valor null, exceto pelo fato que a condio de chaves no repetidas seja respeitada, isto , possvel adicionar apenas uma 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.

Tpicos Avanados de Programao - Ano:2011 Hierarquia

Prof.Fbio Rener

java.util.HashMap

HashMap uma implementao da interface Map, que ocorre atravs da classe abstrata AbstractMap. No garante a ordem dos seus elementos, nem que estaro sempre 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 ser nica, 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 chavevalor do Map m. HashMap (Map<K,V> m): Constri um novo HashMap com todos os pares de chave-valor do Map m usando generics.

Adicionando um par chave-valor no HashMap Object put (Object chave, object valor): Adiciona o par chave-valor ao HashMap.

Tpicos Avanados de Programao - Ano:2011 Verificando se o HashMap contem determinada chave-valor

Prof.Fbio Rener

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 como parmetro.

Obs: Caso a chave no seja encontrada, null ser retornado. No entanto, existe a possibilidade de haver uma chave associada ao valor null, portanto, MUITO importante verificarmos se a chave existe no HashMap, atravs do mtodo containsKey (object Key).

Removendo elementos do HashMap object remove (object key): Remove o par chave-valor encontrado no HashMap.

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; public class Pessoa implements Comparable { private String nome; private String rg; public Pessoa(String nome, String rg) { this.setNome(nome); this.setRg(rg); } public String getNome() { return nome; } public void setNome(String nome) {

Tpicos Avanados de Programao - Ano:2011


this.nome = nome; } public String getRg() { return rg; } public void setRg(String rg) { this.rg = rg; } @Override public String toString() { return "Pessoa [nome=" + nome + ", rg=" + rg + "]"; } @Override public int compareTo(Object obj) {

Prof.Fbio Rener

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; public class ExemploHashMap { public static void main(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<String,Pessoa> pessoas = new HashMap<String,Pessoa>(); pessoas.put(rg1, pessoa1); pessoas.put(rg2, pessoa2); pessoas.put(rg3, pessoa3);

Tpicos Avanados de Programao - Ano:2011


//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); }

Prof.Fbio Rener

//Metodo que imprime todos os elementos do Map recebido como parametro public static void imprimeMap(Map<String,Pessoa> map){ //cria lista com chaves do MAP Set<String> 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 public static void removeElemento(Map<String,Pessoa> 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 import import import java.util.HashMap; java.util.Iterator; java.util.Map; java.util.Set;

public class ExemploHashMap2 { public static void main(String[] args) { //chave String rg1 = "11111"; Pessoa pessoa1 = new Pessoa("Fabio Rener",rg1); //chave String rg2 = "22222"; Pessoa pessoa2 = new Pessoa("Juliana Faria",rg2);

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 parametro public static void imprimeMap(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 public static void removeElemento(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 e consequentemente ordenada.

Tpicos Avanados de Programao - Ano:2011 Exemplo Gerenics:

Prof.Fbio Rener

ExemploTreeMap.java

package br.com.tap.exemplo; import java.util.Map; import java.util.Set; import java.util.TreeMap; public class ExemploTreeMap { public static void main(String[] args) { Map<String,Pessoa> map = new TreeMap<String,Pessoa>(); //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 public static void imprimeMap(Map<String,Pessoa> map){ //cria lista com chaves do MAP Set<String> chaves = map.keySet(); //loop na colecao for (String c : chaves) { System.out.println("\n===Impressao do Map==============="); System.out.println("[Chave]: " + c); System.out.println(map.get(c) + "\n"); } } }

Tpicos Avanados de Programao - Ano:2011 Exemplo Sem Generics:

Prof.Fbio Rener

ExemploTreeMap.java

package br.com.tap.exemplo; import import import import java.util.Iterator; java.util.Map; java.util.Set; java.util.TreeMap;

public class ExemploTreeMap2 { public static void main(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 public static void imprimeMap(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"); } } }

Tpicos Avanados de Programao - Ano:2011 java.util.Properties

Prof.Fbio Rener

A classe java.util.Properties, presente desde a verso 1.0 do JDK, filha (extende) da classe java.util.Hashtable e, por conseqncia, implementa a interface Map. Ela armazena 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 estar dentro de nossa aplicao.

Exemplo:

CarregaPropriedades.java

package br.com.tap.exemplo; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class 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() { return props; } public void setProps(Properties props) {

Tpicos Avanados de Programao - Ano:2011


this.props = props; }

Prof.Fbio Rener

ExemploProperties.java

package br.com.tap.exemplo; import java.util.Enumeration; import java.util.Properties; public class ExemploProperties { /** * @param args */ public static void main(String[] args) { CarregaPropriedades minhasPropriedades = new CarregaPropriedades(); Properties props = minhasPropriedades.getProps(); imprimePropriedade(props); } public static void imprimePropriedade(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

Tpicos Avanados de Programao - Ano:2011

Prof.Fbio Rener

11