Você está aqui: Java ::: Coleções (Collections) ::: Set (Conjunto) |
Java Collections - Como usar a interface Set em seus códigos JavaQuantidade de visualizações: 5046 vezes |
A interface Set estende a interface Collection mas não adiciona novos métodos ou constantes. Em vez disso, esta interface define que uma instância de Set não contenha elementos duplicados. Esta responsabilidade é transferida para as classes que implementam a interface. A classe abstrata AbstractSet é uma classe de conveniência que herda da classe também abstrata AbstractCollection e implementa a interface Set. A classe AbstractSet fornece implementações concretas para os métodos equals() e hashCode(). Estes métodos permitem a funcionalidade da não permissão de elementos duplicados nos conjuntos. As classes concretas mais conhecidas da interface Set são: HashSet - Esta classe é implementada em cima de uma tabela hash, ou seja, um array (matriz) na qual os elementos são armazenados em posições calculadas de acordo com o seu conteúdo. Uma característica interessante de HashSet é que os elementos raramente são retornados na mesma ordem na qual foram inseridos. LinkedHashSet - Esta classe estende a classe HashSet com uma implementação de lista ligada (linked list) que permite a ordenação dos elementos no conjunto. TreeSet - Esta classe é uma classe concreta que implementa a interface SortedSet. A interface SortedSet é uma sub-interface de Set que garante que os elementos no conjunto estejam ordenados. Além disso, esta interface fornece os métodos first() e last() para acessar o primeiro e o último elemento do conjunto. Há ainda os métodos headSet(toElement) e tailSet(fromElement) para retornar uma faixa do conjunto cujos elementos sejam "menores" que toElement e "maiores" que fromElement. Seja qual for a implementação de Set que você queira usar, é sempre uma boa idéia codificar em cima da interface. Isso facilita a troca de HashSet por TreeSet ou vice-versa sem grandes modificações no seu código. Veja um exemplo no qual usamos a classe concreta HashSet para representar um conjunto de cinco strings únicas: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Estudos{ public static void main(String[] args) { // vamos criar uma instância da classe HashSet Set<String> conjunto = new HashSet<>(); // vamos inserir cinco elementos no Set conjunto.add("Açucar"); conjunto.add("Macarrão"); conjunto.add("Feijão"); conjunto.add("Carne"); conjunto.add("Maionese"); // vamos exibir os elementos inseridos Iterator iterator = conjunto.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } } } Ao executar este trecho de código teremos um resultado parecido com: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- Macarrão Feijão Carne Açucar Maionese Note que raramente os elementos serão exibidos na ordem na qual eles foram inseridos. Experimente agora trocar a linha: Set<String> conjunto = new HashSet<>(); por Set<String> conjunto = new LinkedHashSet<>(); Execute o código novamente e verá que agora os elementos são exibidos na mesma ordem que foram inseridos. |
![]() |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Um programa que calcule e mostre a tabuada de multiplicação de um número digitado pelo usuário (entre 1 e 10)Quantidade de visualizações: 6514 vezes |
Pergunta/Tarefa: Escreva um programa Java que usa o laço for para calcular a tabuada de multiplicação para um número digitado pelo usuário. Este número deve estar entre 1 e 10 (inclusive). Sua saída deve ser parecida com: Informe um valor entre 1 e 10: 8 A tabuada do número 8 é: 8 X 1 = 8 8 X 2 = 16 8 X 3 = 24 8 X 4 = 32 8 X 5 = 40 8 X 6 = 48 8 X 7 = 56 8 X 8 = 64 8 X 9 = 72 8 X 10 = 80 Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos solicitar que o usuário informe um inteiro entre 1 e 10 System.out.print("Informe um valor entre 1 e 10: "); int numero = Integer.parseInt(entrada.nextLine()); // vamos verificar se o valor está na faixa desejada if((numero < 1) || (numero > 10)){ System.out.println("O número deve ser entre 1 e 10"); } else{ // o número é válido....vamos exibir a tabuada System.out.println("\nA tabuada do número " + numero + " é:\n"); for(int i = 1; i <= 10; i++){ System.out.println(numero + " X " + i + " = " + (numero * i)); } } System.out.println("\n"); } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Um programa que lê três números e os classifica e exibe em ordem crescenteQuantidade de visualizações: 6802 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede ao usuário três números inteiros. Em seguida, ordene os três valores em ordem crescente e os exiba. Sua saída deverá ser parecida com: Informe o primeiro valor: 7 Informe o segundo valor: 4 Informe o terceiro valor: 6 Os números ordenados em ordem crescente são: 4 6 7 Veja a resolução comentada deste exercício usando Java console: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos pedir que o usuário informe três números inteiros System.out.print("Informe o primeiro valor: "); int num1 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo valor: "); int num2 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o terceiro valor: "); int num3 = Integer.parseInt(entrada.nextLine()); // o primeiro número é maior que o segundo? vamos trocá-los if(num1 > num2){ int temp = num1; num1 = num2; num2 = temp; } // o segundo número é maior que o terceiro? vamos trocá-los if(num2 > num3){ int temp = num2; num2 = num3; num3 = temp; } // depois da segunda troca o número 1 é novamente maior que o número 2? if(num1 > num2){ int temp = num1; num1 = num2; num2 = temp; } // mostra o resultado System.out.println("Os números ordenados em ordem crescente são: "); System.out.println(num1 + " " + num2 + " " + num3); System.out.println("\n"); } } |
Java ::: Estruturas de Dados ::: Lista Ligada Simples |
Estruturas de dados em Java - Introdução às listas ligadas em JavaQuantidade de visualizações: 16074 vezes |
Então você se interessou pelo assunto de listas ligadas em Java? Recomendo que leia esta anotação com muita atenção. É o ponto de partida para o entendimento e implementação desta estrutura de dados tão importante. Uma lista singularmente ou duplamente ligada (singly or doubly linked list) é uma lista dinâmica no sentido de que ela pode crescer ou diminuir de acordo com as necessidades do programa. As matrizes (arrays) comuns também têm seu papel assegurado no estudo das estruturas de dados. No entanto, uma de suas limitações é que seus elementos são dispostos lado a lado na memória. Isso torna a inserção de um novo elemento no meio do array uma tarefa dispendiosa, visto que os demais elementos precisam ser movidos para outras posições. Em uma lista dinâmica isso não acontece. O conceito principal das listas ligadas é a capacidade de um nó (cada elemento da lista é chamado de nó) poder apontar para um outro nó com estrutura semelhante. Veja a estrutura típica de um nó em uma lista ligada: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- // classe No public class No{ public int valor; public No proximo; } // fim da classe No Note que esta classe contém dois campos: um campo do tipo int que guarda o valor do nó e um campo do tipo referência apontando para um objeto do mesmo tipo que o nó atual. Isso permite a circularidade das listas, ou seja, um nó apontando para um elemento de seu mesmo tipo. Com este conhecimento já podemos criar o início de uma lista singularmente ligada, para isso só precisamos declarar uma variável do tipo No. Veja: // declara o início da lista No inicio; Até agora temos uma lista ligada vazia. A criação do primeiro elemento da lista pode ser feito da seguinte forma: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Lista{ // declara o início da lista static No inicio = null; public static void main(String args[]){ // verifica se a lista está vazia if(inicio == null){ // reserva memória para o novo nó inicio = new No(); // a memória foi alocada com sucesso? if(inicio != null){ inicio.valor = 150; // é o primeiro nó...seu campo proximo não deve // apontar para lugar nenhum inicio.proximo = null; } } System.out.println(inicio.valor); System.exit(0); } } Aqui nós temos a criação do primeiro nó de uma lista singularmente ligada. Note como usamos a palavra-chave new para alocar memória para o nó atual. Veja também que o valor null é fornecido para o campo próximo do nó. Isso aconteceu porque temos apenas um nó. Em outras dicas desta seção abordaremos como inserir os demais nós e também listar todos os nós existentes na lista. Até lá. |
Java ::: Dicas & Truques ::: Data e Hora |
Como construir uma data em Java usando o método set() da classe Calendar - Apostila Java BásicoQuantidade de visualizações: 135 vezes |
Nesta dica mostrarei como é possível usar o método set() da classe Calendar, do pacote java.util, para construir uma data e hora em Java. Veja o exemplo completo (fique atento à ordem do ano, mês, dia, horas, minutos e segundos): ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; import java.util.Calendar; public class Estudos{ public static void main(String args[]){ Calendar agora = Calendar.getInstance(); // ano, mês, dia, hora, minuto, segundo // mês começa a partir de 0 agora.set(2005, 10, 23, 5, 29, 53); // mostra o resultado System.out.println(agora.getTime().toString()); } } Ao executar este código Java nós teremos o seguinte resultado: Wed Nov 23 05:29:53 BRST 2005 |
Java ::: Pacote java.lang ::: Character |
Como usar a classe Character da linguagem Java para tratar caracteres individuais em seus programasQuantidade de visualizações: 7181 vezes |
A classe Character, uma classe pública e final (ou seja, não é possível fazer subclasse desta classe) e presente no pacote java.lang é uma classe encapsuladora (wrapper class) para o tipo primitivo char. Objetos desta classe contém apenas um campo, cujo tipo é char. Veja a posição desta classe na hierarquia de classes da plataforma Java: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- java.lang.Object java.lang.Character Esta classe implementa as interfaces Serializable e Comparable<Character>. Uma das vantagens de se usar objetos da classe Character é que podemos chamar seus métodos estáticos para obter informações sobre o tipo char encapsulado. Veja: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- public class Main { public static void main(String[] args) { // uma variável do tipo char char letra = 'A'; // vamos verificar se o caractere anterior é uma letra maiúscula if(Character.isUpperCase(letra)){ System.out.println("A letra é maiúscula"); } else{ System.out.println("A letra não é maiúscula"); } } } Ao executarmos este código teremos o seguinte resultado: A letra é maiúscula Veja que neste trecho de código nós usamos o método estático isUpperCase() da classe Character para verificar se um determinado caractere está em letras maiúsculas. |
Java ::: Dicas & Truques ::: Data e Hora |
Como adicionar ou subtrair horas à data atual usando o método add() e a constante Calendar.HOUR da classe Calendar do JavaQuantidade de visualizações: 206 vezes |
Nesta dica mostrarei como podemos usar a função add() e a constante Calendar.HOUR da classe Calendar do Java para adicionar ou subtrair horas de uma data. Veja o exemplo a seguir:---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.Calendar; public class Estudos { public static void main(String[] args) { // vamos construir uma instância da classe Calendar Calendar agora = Calendar.getInstance(); // vamos exibir a data e hora atuais System.out.println("Data e hora atual: " + agora.getTime().toString()); // adiciona 15 hora à hora atual agora.add(Calendar.HOUR, 13); // mostra a data e hora com as 15 horas adicionadas System.out.println("Daqui a 15 horas: " + agora.getTime().toString()); } } Ao executar este código Java nós teremos o seguinte resultado: Data e hora atual: Mon Jan 16 12:33:26 BRST 2023 Daqui a 15 horas: Tue Jan 17 01:33:26 BRST 2023 Se quisermos subtrair as horas ao invés de adicionar, basta fornecermos um valor negativo para o método add(). |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Valor da diária, valor médio arrecadado com e sem promoção e o lucro ou prejuízo mensal de uma promoção em um hotelQuantidade de visualizações: 14533 vezes |
Pergunta/Tarefa: Escreva um programa Java para resolver o seguinte problema: Um hotel com 42 apartamentos resolveu fazer promoções para os fins de semana fora da alta temporada, isto é, nos meses de abril, maio, junho, agosto, setembro, outubro e novembro. A taxa da promoção é de 22% da diária normal. A ocupação média do hotel sem promoção é de 40%. A expectativa é aumentar a taxa de ocupação para 70%. Supondo que as expectativas se confirmem, escrever um algoritmo que lê a diária normal, que calcule e escreva as seguintes informações: (a) O valor da diária no período da promoção. (b) O valor médio arrecadado sem a promoção, durante um mês. (c) O valor médio arrecadado com a promoção, durante um mês. (d) O lucro ou prejuízo mensal com a promoção. Seu código Java deverá apresentar uma saída parecida com: Informe o valor da diária normal: 120 Diária no período de promoção: 26,40 Média arrecadada sem a promoção durante um mês: 8064,00 Média arrecadada com a promoção durante um mês: 3104,64 Prejuízo mensal com a promoção: 4959,36 Veja a resolução comentada deste exercício usando Java console (lendo a entrada do usuário por meio do uso da classe Scanner): ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // vamos criar um objeto da classe Scanner Scanner entrada = new Scanner(System.in); // valor da diária em período normal double valor_diaria_normal; // valor da diária no período de promoção double valor_diaria_promocao; // vamos obter o valor da diária no período normal System.out.print("Informe o valor da diária normal: "); valor_diaria_normal = Double.parseDouble(entrada.nextLine()); // vamos obter o valor da diária no período promocional valor_diaria_promocao = valor_diaria_normal * (22.0 / 100.0); // vamos calcular o valor médio arrecadado sem a promoção, durante um mês // estamos assumindo 4 finais de semana por mês double media_arrecado_sem_promocao = (valor_diaria_normal * (42 * (40.0 / 100.0)) * 4); // vamos calcular o valor médio arrecadado com a promoção, durante um mês // estamos assumindo 4 finais de semana por mês double media_arrecado_com_promocao = (valor_diaria_promocao * (42 * (70.0 / 100.0)) * 4); System.out.printf("Diária no período de promoção: %.2f\n", valor_diaria_promocao); System.out.printf("Média arrecadada sem a promoção durante um mês: %.2f\n", media_arrecado_sem_promocao); System.out.printf("Média arrecadada com a promoção durante um mês: %.2f\n", media_arrecado_com_promocao); // houve lucro ou prejuízo? if (media_arrecado_sem_promocao < media_arrecado_com_promocao) { System.out.printf("Lucro mensal com a promoção: %.2f\n", media_arrecado_com_promocao - media_arrecado_sem_promocao); } else { System.out.printf("Prejuízo mensal com a promoção: %.2f\n", media_arrecado_sem_promocao - media_arrecado_com_promocao); } } } |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como remover todos os espaços de uma string usando o método replace() da classe String da linguagem JavaQuantidade de visualizações: 1 vezes |
Nesta dica mostrarei como usar o método replace() da classe String do Java para remover todos os espaços de uma frase ou texto, tanto no início, fim e no meio. Note que esta dica remove TODOS os espaços, não somente os espaço excessivos. Para isso veja outras dicas dessa seção. Veja o código Java completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda para ajustar o código abaixo de acordo com as suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar) Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar a manter o site livre de anúncios. Ficaremos eternamente gratos ;-) Nosso PIX é: osmar@arquivodecodigos.com.br ---------------------------------------------------------------------- package arquivodecodigos; public class Estudos{ public static void main(String[] args){ String frase = "Programar em Java é muito bom"; System.out.println("Com espaços: " + frase); frase = frase.replace(" ", ""); System.out.println("Sem espaços: " + frase); System.exit(0); } } Ao executar este código nós teremos o seguinte resultado: Com espaços: Programar em Java é muito bom Sem espaços: ProgramaremJavaémuitobom |
Vamos testar seus conhecimentos em Python |
Qual das formas abaixo é usada para criar uma TUPLA (TUPLE) em Python? A) valores = {5, 1, 9, 4} B) valores = [5, 1, 9, 4] C) valores = (5, 1, 9, 4) D) valores = [5.. 1.. 9.. 4] E) valores = tuple[5, 1, 9, 4] Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
O aço no edifício A estrutura de estabilização da moldura estrutural da edificação da figura a seguir, que é formada por paredes rígidas, feitas de aço, concreto ou alvenaria de concreto armado, pode ser chamada de: ![]() A) Estrutura contraventada. B) Moldura amarrada excentricamente. C) Moldura resistente a momentos. D) Paredes de cisalhamento. E) Nenhuma das alternativas anteriores. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
Ética profissional, social, política A delimitação do que é ético e do que é moral é motivo de grande confusão. Ao longo da história do pensamento humano, podemos identificar que, por estarem em relação constituinte um do outro, ambos os domínios da vida humana são pensados como a mesma coisa. Contudo, ética e moral têm os seus sentidos e práticas distintas. A respeito disso, assinale a alternativa correta: A) A moral é ausente de normas de condutas sociais. B) A ética é um exercício subjetivo sempre guiado pela moral. C) A moral diz respeito a um conjunto de normas e tradições universais. D) Ética se aplica à ação no âmbito profissional e público. E) A ética tem um caráter universal e a moral, um caráter particular. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fundações |
Fundações diretas ou rasas As fundações rasas são executadas nas camadas mais superficiais do solo, geralmente em profundidades inferiores a 2m e são utilizadas comumente em obras de pequeno ou médio porte. De acordo com a norma ABNT NBR 6122: 2010 (Projeto e execução de fundações), no que se refere às fundações superficiais rasas ou diretas, assinale a alternativa correta. A) No dimensionamento de fundação superficial solicitada por carga excêntrica, a área comprimida deve ser de, no mínimo, dois terços da área total da fundação. B) Levando em consideração o custo-benefício de uma obra, recomenda-se que a profundidade mínima para assentamento de uma sapata seja de 1m. C) As partes da fundação rasa em contato com o solo devem ser concretadas sobre um lastro de concreto estrutural igual a 2,5cm de espessura. D) No caso de fundações próximas, porém situadas em cotas diferentes, a fundação situada em cota mais alta deve sempre ser executada primeiro. E) As sapatas isoladas não devem ter dimensões em planta inferiores a 1m. Se esse critério não puder ser utilizado, deve-se adotar outro tipo de fundação. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica |
Equação de Bernoulli Considere o tubo de fluxo abaixo contendo óleo, que flui de forma a podermos considera-lo um fluido ideal. Ele flui por um tubo que sobe de nível e se estreita. Dois manômetros marcam a pressão em dois pontos do tubo, como mostra a figura. Qual o valor da pressão indicada no segundo manômetro? (Dados: ρóleo = 900 kg / m3 e g = 9,8 m/s2) ![]() A) 38,4 kPa B) 162 kPa C) 64,4 kPa D) 135 kPa E) 74,0 kPa Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |