Pro028 - Aula 2 Tap

download Pro028 - Aula 2 Tap

of 11

Transcript of Pro028 - Aula 2 Tap

  • 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