Salve! Salve!Pessoal! A partir de hoje darei inicio a uma série de post ao qual nomei: “REVISÃO SCJP”.
Espero que com essa série possa ajudar aos pré-SCJP rsrs.
O objetivo é abordar dicas e apresentar aquele assunto “chato” e demorado de aprender quando está estudando para ser um Sun Certified Java Programmer. Mas o post é recomendado também para os iniciantes Java já que mais cedo ou mais tarde vocês encontrarão o assunto Collection (independente da modalidade de estudo: livro/escola).
O assunto é bastante importante: “Conjuntos/Collection”. Em primeira instância abordarei um pouco a definição e em seguida apresento as classes e interfaces correspondentes. Por experiência própria não há outro segredo para aprender Conjuntos se você não praticá-lo incansavelmente. Aos estudantes SCJP pratique (muito++) e paralelamente associe toda parte teórica com a prática, lá vai uma dica abaixo:
Ex.: Se você está estudando a class ArrayList, pratique incansavelmente usando todos os métodos dessa class, crie códigos que lançam exceções e procure saber qual exceção é lançada. Outras que não compilam e saiba o porque.
Let’s GO…
Trabalhar com desenvolvimentos de sistemas e não envolver estrutura de dados é algo quase que impossível. Em algum momento você vai precisar armazenar informações e em outro buscá-las.
Todo programador já fez esse exercício:
Ex.1 “Crie um vetor de X posições e insira os seguintes dados […] e depois ordene, agora mostre o ultimo elemento”.
Ex.2 “Crie um vetor para armazenar nomes, porém não pode conter elementos repetidos […]”
Quando estamos iniciando os estudos como programador, solucionar esse exercício não pode ser algo tão simples em nível de programação.
Java possui algumas APIs que facilita a vida do programador, para que ele não queira “reinventar a roda”. Termine de ler o post e descubra por que…
Summary
The objective this article is presents a theory and practice about Collection in Java. If you is studying for SCJP is recommend the reading. There isn’t other form of the learn collection if you not practice. The students of the exam SCJP there will some questions about collection that can be easy or difficult depend of your level of study with this subject. In the end this article there are some example.
Definition collection: represents any structure of dados, where object are storage. (Kathy Sierra)
Pré-Requisito
– Instalação Java 1.5/superior
My Column Java – Imasters /Minhas Colunas Java – Imasters:
Mais um pouco sobre threads em Java
Criando uma aplicação Servlet & JSP – Netbeans 6
Criando pagina de erro em aplicações Java
Conjunto
Representa qualquer estrutura de dados, onde objetos são armazenados (Kathy Sierra).
Em um conjunto é possível: inserir, remover, buscar, recuperar objetos.
Conjunto pode ser:
Ordenado X Classificado:
– Ordenado: existe uma ordem para o conjunto seguir. Por exemplo, um conjunto de números inteiro segue 1..2…3.
– Classificado: ordem do conjunto por alguma regra de classificação. Por exemplo, class Carro, regra de classificação para os elementos armazenados nela pode ser pela cor, fornecedor, alfabeto, código de fabricação etc.
Em Java temos:
Collection – é uma INTERFACE. Onde Set, List e Queue derivam dessa interface. Métodos comuns add(), remove(), size().
Collections – é uma CLASS que armazena vários métodos estáticos utilitários como sort() que serve para ordenação dos elementos.
HashTable – essa class não é ordenada, mais segue uma lógica interna para determinar a ordem dos elementos com base nos códigos hashing. Os métodos dessa class são sincronizados e não aceita chaves nem valores null.
HashMap – aceita chaves e valores null, os métodos dessa class não são sincronizados e tendem a rodar mais rápido que HashTable. Chaves duplicada acaba gerando uma subscrição no valor.
HashSet – não existe uma ordenação na interação. Não aceita objetos iguais no conjunto desde que o código hashing seja implementado de forma eficiente.
ArrayList : é como um Array – mantém a ordem pelo índice.
LinkedHashSet : mantém a ordem pela inserção, não aceita duplicatas caso o código hashing esteja implementado de forma correta.
LinkedList:aceita duplicata e a ordem de iteração é por inserção.
PriorityQueue: Ordena os elementos usando prioridade definida pelo programador. Pode ser por: ordem natural dos elementos, implementação do java.util.comparator. Aqui é quebrada a idéia de FIFO em uma fila.
Métodos da classe PriorityQueue:
offer() à adiciona um elemento a fila.
Métodos que retorna null se estiverem vazio:
poll() à retorna o elemento com maior prioridade e remove
peek() à mostra o elemento com maior prioridade e não remove.
Esses lançam exceções não verificadas:
remove() à remove um elemento, se estiver vazio lança uma exceção.
element()à retorna o elemento na ponta da queue se estive vazia lança uma exceção
As interfaces correspondentes a cada Classe:
A Interface List: índice tem relevância.
Arraylist,Vector,LinkedList,
Interface Set: não aceita elementos duplicados
HashSet, LinkedhashSet, TreeSet(nao aceita null – TreeSet).
Interface Map: identificadores (Keys) exclusivos são relevantes.
LinkedHashMap e HashTable(métodos sincronizados), HashMap(aceita valores e chaves null).
Percebam a essência de usar conjuntos:
//Criarei poucos exemplos para não ficar um post muito grande, a idéia é mostrar a eficiência dos conjuntos.
Ex. 1
import java.util.ArrayList;
import java.util.Collections;
public class Locadora {
public static void main(String[] args) {
ArrayList<Integer> filmes = new ArrayList<Integer>();
filmes.add(10);
filmes.add(5);
filmes.add(35);
//método sort pertence a classe Collections há pedaginhas no exame perguntando quem é o pai desse método…
Collections.sort(filmes); System.out.println(filmes);
}}//imprime o conjunto ordenado simples não?
……………..
Ex. 2
//usando chaves, agora associei esse código com a teoria do HashMap abordada no inicio do post
import java.util.HashMap;
class Maphash{
public static void main(String agr[]){
HashMap<Integer,String>add = new HashMap<Integer,String>();
add.put(10,”tv”);
add.put(14,”som”);
add.put(10,”micro”);
//me retorne o cara com a chave 14
System.out.println(add.get(14));
System.out.println(add.size()); //me mostre o tamanho do meu conjunto
}}
…………………
Ex. 3
//Um exemplo mais “útil”: cadastrando produto
import java.util.Map;
import java.util.LinkedHashMap;
import java.util.Scanner;
class Loja{
static String info;
public static void main(String [] agrs){
Map<Integer,String> cad = new LinkedHashMap<Integer,String>();
Scanner dados = new Scanner(System.in);
int qtde=0;
int cadinfo=0;
int cont=0;
System.out.println(“quantos produtos deseja cadastrar “);
qtde = dados.nextInt();
while(cont<qtde){
System.out.print(“\n Digite o nome do Produto “);
info = dados.next();
cad.put(cadinfo, info);
cadinfo++;
cont++;
}
System.out.println(“total de produtos cadastrados “ + cad.size());
System.out.println(“imprimindo produtos cadastrado….”);
for(int a=0;a<cadinfo;a++){
System.out.println(cad.get(a));
}
System.out.println(“Codigos chaves dos produtos por ordem de insercao “);
System.out.println(cad.keySet());
System.out.println(“Remova um produto digite o codigo “);
int co = dados.nextInt();
cad.remove(co);
System.out.println(“total de produtos cadastrados “ + cad.size());
}}
<!–[if gte mso 9]> Normal 0 21 false false false PT-BR X-NONE X-NONE <![endif]–><!–[if gte mso 9]> <![endif]–> <!–[endif]–>
Bom pessoal! Vou ficando por aqui, espero que tenham gostado do post e até próxima serie REVISÃO SCJP! Não deixem de comentar: sugestões/criticas etc.
Conforme mencionei na semana passada, que estarei criando um pequeno summary de cada post para facilitar a vida da galera do fórum javaranch que também são leitores do blog.
Como não foi possível atender ao pedido de criar posts 100% em inglês (porém a vontade é grande, quem sabe ano que vem quando estarei formado?!) devido minha falta tempo achei o summary uma forma de apresentar o post e daí cada leitor decide se realizará a tradução conforme foi sugerido por um dos leitores. Ao experts no inglês que identificar algum erro no summary favor mandar uma sugestão, pois não estou usando tradutor. Já que considero mais uma forma de poder praticar o idioma.
Abraços!!
<!–[if gte mso 9]> Normal 0 21 false false false PT-BR X-NONE X-NONE <![endif]–><!–[if gte mso 9]> <![endif]–>
<!–[endif]–>
Parabéns Camilo, seu blog está muito legal, continue com essa iniciativa!!!
Parabéns mais uma vez.
um abraço
Ícaro Santos
obrigado! icaro!
flw! abraço!
Parabéns Camilo !!
Muito boa a sua iniciativa com este blog.
Gostei de suas postagens, bem simples e direto !!
É bom saber que podemos contar com pessoas assim !!
O blog já está fazendo parte dos meus favoritos !!
Parabéns e continue assim!!
Abraços !!
olá Ygor,
Primeiramente obrigado por acessar o blog! E fico feliz em saber que o mesmo está contribuindo para os leitores…
Fico grato! qualquer sugestão de tema so enviar um email…
flw! Abraço!
Camilo muito legal da sua parte compartilhar os seus conhecimentos todos os assuntos estão me ajudando muito!!! Estou estudando para a certificação e tem muitas dúvidas que consigo tirar com o blog..
Continue assim…
Abraço
Parabéns Cara. Seu blog tá muito bacana. É uma força pra quem deseja aprender Java.
Abraço…
Ola Camilo.
Me recordo há alguns anos atrás, pra ser exato entre 02 e 03, nos falamos por msn, você estudando para certificação e eu também.
Maneiro saber que você já tirou a sua e esta ae passando informação e ‘experiência’ para a galera no seu blog. Muito bacana a iniciativa.
Eu tive algumas mudanças de rumo, mas já estou de volta e firme, muito firme rumo aos SCJA e SCJP, inclusive estou estudando utilizando um resumo que você fez, quando estudava para SCJP.
Parabéns!!!
Abs,
ermelo007@hotmail.com
opa! Rodrigo! lembro sim! cara! Fico feliz em saber que os resumos estao servindo hehe! E boa sorte nesse novo caminho ai SCJA e SCJP, eu quero tirar SCJA ano q vem, pq estou em periodo de monografia, entao nao dar para se dedicar a certificacao. Mas boa sorte nos estudos!
abraço 😀
Haw!
Valeu pelo post. Só uma coisinha: é Sun Certified Java Programmer, não Sun Certified Programmer Java. E onde consta "método sort pertence interface Collections" no Ex. 1 não seria classe Collections.
Mais uma vez valeu pelo post, já for pro delicious.
Flwz!?
opa! acho que na hora estava pensando em interface e acabei escrevendo hehe! Agora a respeito do Sun certified… é que no meu certificado veio assim o java apos o programmer e na minha carteirinha tb!
E obrigado por acessar o blog e fazer as sugestoes!
abraços 😀
Camilo, me fala sobre Ordenamento e Classificação de Conjutos
Olá Camilo, estou no inicio dos estudos para certificação SCJP e seu blog ,didático e organizado, está sendo muito utíl. acabei criando um blog tbem com o objetivo de organizar bons conteúdos encontrados na net, justamente sobre java e TI . Obrigado por compartilhar seu conhecimento.