• Nenhum resultado encontrado

10.6 Usando Conjuntos – Interface Set

No documento Linguagem Java COMPLETA (páginas 133-135)

Implementação de conjuntos que não permite elementos duplicados e não há preocupação com ordenamento. O método equals() e hashCode() é usado para saber se dois objetos são idênticos.

10.6.1 HashSet

O HashSet é uma implementação da interface Set que usa uma tabela hash (espalhamento). O uso de uma tabela hash permite buscar os elementos de forma fácil e rápida. A implementação usa o código de hash do objeto, chama o método hashCode(), que determina onde um objeto será ou está armazenado. Usamos HashSet quando quiser um conjunto com elementos únicos e quando a ordem dos elementos na iteração for irrelevante. Exemplo:

import java.util.*;

public class HashSetDemo {

public static void main(String args[]) {

HashSet<String> hs = new HashSet<String>(5); System.out.println(hs.add("one"));

System.out.println(hs.add("two")); System.out.println(hs.add("one")); System.out.println(hs.add("three")); System.out.println(hs.add("four")); System.out.println(hs.add("five")); System.out.println(hs);

} }

Listagem 10.8 – Genéric HashSet

10.6.2 TreeSet

O TreeSet é uma implementação da interface Set que usa uma árvore de balanceamento. Esta classe assegura que o conjunto será organizado em uma ordem ascendente, na regra de comparação padrão. Veja o exemplo:

import java.util.*;

public class TreeSetDemo {

public static void main(String args[]) {

TreeSet<String> ts = new TreeSet<String>(); ts.add("um");

ts.add("dois"); ts.add("tres"); ts.add("quatro"); ts.add("10");

System.out.println(ts); }

}

Listagem 10.9 – TreeSet

10.7 Usando Mapas – Interface Map

Implementa mapeamentos entre chaves não-repetidas a valores. Um mapa é composto de uma associação entre objeto chave (Key) a um objeto valor (Value).

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores.

10.7.1 HashMap

Implementação de Map, modela mapas não ordenados, sem classificação e com métodos não- sincronizados. A implementação usa o código de hash do objeto, chama o método hashCode(), que determina onde um objeto será ou está armazenado. Veja exemplo:

import java.util.HashMap; public class HashMapDemo {

public static void main(String[] args) {

HashMap<Integer, String> hm = new HashMap<Integer, String>(); hm.put(1, "um");

hm.put(2, "dois"); hm.put(3, "tres"); hm.put(4, "quatro"); hm.put(5, "10");

System.out.println(hm.size()); System.out.println(hm);

System.out.println(hm.get(new Integer(3))); System.out.println(hm.get(0));

} }

Listagem 10.10 - HashMap

10.8 Classificando Coleções:Collections.sort

Vimos anteriormente que as listas são percorridas de maneira pré determinada de acordo com a inclusão dos itens. Mas muitas vezes queremos percorrer a nossa lista de maneira ordenada, classificando os elementos de acordo com nossa necessidade.

A classe Collections (com s no final) nos permite ordenar coleções, através do um método estático sort, que recebe um List como argumento e o ordena em sua ordem natural (números = crescente, string = alfabética). Exemplo:

import java.util.*;

public class OrdenandoCollection {

public static void main(String[] args) {

List<String> lista = new ArrayList<String>(); lista.add("Goiânia");

lista.add("São Paulo"); lista.add("Aracajú"); // lista sem ordenação System.out.println(lista); Collections.sort(lista); // lista ordenada

System.out.println(lista); }

}

Listagem 10.11 – Manipulando coleções

Como resultado da execução teremos:

[Goiânia, São Paulo, Aracajú] [Aracajú, Goiânia, São Paulo]

Linguagem de Programação Java

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 12

//atribuindo valor a variável referência Carro carro1 = new Carro();

carro1.ano = "2001"; carro1.modelo= "fusca"; carro1.cor = "prata";

Figura 2.4 – Layout Memória após inicialização //criando novo alias

Carro carro2 = carro1;

Figura 2.5 – Layout Memória duas variáveis referência para o mesmo objeto

2.3 Membros de Instância

Cada objeto criado deverá ter sua própria instância de variáveis (atributos) definidas pela classe. Os métodos definem o comportamento de um objeto. Isto é importante, pois denota que um método pertence a cada objeto da classe. Porém não devemos confundir isto com a implementação do método, que é compartilhada por todas as instâncias da classe.

2.3.1 Invocação de Métodos

Objetos se comunicam pela troca de mensagens, isto significa que um objeto pode ter que mostrar um comportamento particular invocando uma operação apropriada que foi definida no objeto. Em Java, isto é feito pela

chamada de um método em um objeto usando o operador binário "." (ponto),

devendo especificar a mensagem completa: o objeto que é o recebedor da mensagem, o método a ser invocado e os argumentos para o método (se houver). O método invocado no recebedor pode também enviar informações de volta ao objeto chamador através de um valor de retorno. O método chamado deve ser um que esteja definido pelo objeto.

Os valores das variáveis em um objeto constituem

o seu estado. Dois objetos distintos têm

o mesmo estado se suas variáveis membro têm os

mesmos valores.

135

No documento Linguagem Java COMPLETA (páginas 133-135)

Documentos relacionados