Você está aqui: Java ::: Coleções (Collections) ::: PriorityQueue |
Como usar a classe PriorityQueue para criar uma fila de prioridades em suas aplicações JavaQuantidade de visualizações: 841 vezes |
A classe PriorityQueue, do pacote java.util, é utilizada quando precisamos criar uma fila de prioridade. Como sabemos, uma filha é uma estrutura do tipo FIFO (First-in, First-out), na qual o primeiro elemento a entrar na fila é o primeiro a sair. Uma filha de prioridade permite a remoção dos itens da fila de acordo com uma prioridade pré-determinada. Antes de progredirmos, veja a posição da classe PriorityQueue na hierarquia de classes da plataforma Java: java.lang.Object java.util.AbstractCollection<E> java.util.AbstractQueue<E> java.util.PriorityQueue<E> As interfaces implementadas pela classe PriorityQueue são: Serializable, Iterable<E>, Collection<E> e Queue<E>. Vamos ver agora como podemos usar a classe PriorityQueue para criar uma fila de prioridade de números inteiros e entender melhor o seu funcionamento: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.PriorityQueue; import java.util.Queue; public class Estudos{ public static void main(String[] args){ // vamos criar a fila e adicionar 5 valores inteiros Queue<Integer> fila = new PriorityQueue<>(); fila.add(7); fila.add(5); fila.add(11); fila.add(2); fila.add(1); // vamos remover os elementos da fila System.out.println("Ordem de remoção dos elementos da fila de prioridade:"); while(!fila.isEmpty()){ System.out.print(fila.poll() + " "); } } } Ao executar este código Java nós teremos o seguinte resultado: Ordem de remoção dos elementos da fila de prioridade: 1 2 5 7 11 Note que os elementos da fila foram removidos obedecendo ao critério da ordem natural, ou seja, do menor para o maior. Veja ainda que usamos o método add() para enfileirar um novo elemento na fila de prioriedades e o método poll() para remover o elemento na frente da fila. Em outras dicas desta seção nós exploramos os demais métodos e as técnicas para personalizar o critério de prioridade. |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Um programa Java console ou GUI que exiba um número aleatório inteiro entre 0 e 10 (incluindo)Quantidade de visualizações: 12537 vezes |
Pergunta/Tarefa: Escreva um programa Java console ou GUI que exiba um número aleatório inteiro entre 0 e 10 (incluindo). Em seguida escreva um nova versão que exiba um número aleatório entre 10 e 20 (incluindo): Resposta/Solução: Veja a resolução e explicação para o código Java que exibe um número aleatório entre 0 e 10 (incluindo o 0 e 10): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- O método random() da classe Math retorna um número aleatório maior que ou igual a 0,0 e menor que 1,0. Assim, se o número gerado for: 0.46095278727662825 e o multiplicarmos por 10, teremos 4.609527872766282. Se aplicarmos uma conversão para inteiro teremos 4. Assim, para garantir que o número 10 também poderá ser sorteado, basta multiplicarmos Math.random() por 11. Veja: public static void main(String[] args){ // vamos gerar um número aleatório entre 0 e 10 int numero = (int)(Math.random() * 11); // vamos exibir o número aleatório gerado System.out.println("O número gerado foi: " + numero); } Para sortear um número aleatório entre 10 e 20, só precisamos somar 10 ao número gerado. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- public static void main(String[] args){ // vamos gerar um número aleatório entre 10 e 20 int numero = 10 + (int)(Math.random() * 11); // vamos exibir o número aleatório gerado System.out.println("O número gerado foi: " + numero); } |
Java ::: Dicas & Truques ::: Expressões Regulares |
Java Expressões Regulares - Como substituir todas as ocorrências de uma substring em uma string usando expressões regularesQuantidade de visualizações: 9159 vezes |
Este exemplo mostra como substituir todas as ocorrências de uma substring em uma string usando expressões regulares na linguagem Java. Nesta dica nós substituimos todas as ocorrências de "Java" por "C++". Veja o código completo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.util.regex.*; public class Estudos{ public static void main(String args[]){ String padrao = "Java"; Pattern regPat = Pattern.compile(padrao); String frase = "Java? Gosto muito de Java."; System.out.println("Frase original: " + frase); Matcher matcher = regPat.matcher(frase); String res = matcher.replaceAll("C++"); System.out.println("Depois da substituição: " + res); } } Ao executarmos este código Java nós teremos o seguinte resultado: Frase original: Java? Gosto muito de Java. Depois da substituição: C++? Gosto muito de C++. |
Java ::: Estruturas de Dados ::: Árvore Binária e Árvore Binária de Busca |
Como percorrer uma árvore binária em Java usando o algorítmo depth-first search (DFS) recursivoQuantidade de visualizações: 734 vezes |
Nesta dica mostrarei como podemos implementar o algorítmo da Busca em Profundidade (DFS, do inglês depth-first search) em Java de forma recursiva. Em outra dica desta seção que mostrei como fazer a mesma travessia de forma iterativa e usando uma pilha para backtracking (retrocesso). Antes de iniciarmos, veja a árvore binária que vamos usar no exemplo: Note que esta árvore possui seis nós. O nó 5 é o nó raiz, e possui como filhos os nós 4 e 9. O nó 4, por sua vez, possui apenas um filho, o nó 2, ou seja, o filho da esquerda. O nó 9 possui dois filhos: o nó 3 é o filho da esquerda e o nó 12 é o filho da direita. Os filhos da árvore binária que não possuem outros filhos são chamados de folhas. Com a abordagem da busca em profundidade, começamos com o nó raiz e viajamos para baixo em uma única ramificação. Se o nó desejado for encontrado naquela ramificação, ótimo. Do contrário, continuamos subindo e pesquisando por nós não visitados. Esse tipo de busca também tem uma notação big O de O(n). Vamos à implementação? Veja o código para a classe No, que representa um nó na árvore binária: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // implementação da classe No class No{ public int valor; // o valor do nó public No esquerdo; // o filho da esquerda public No direito; // o filho da direita public No(int valor){ this.valor = valor; this.esquerdo = null; this.direito = null; } } Veja agora o código completo para o exemplo. Note que estamos usando recursividade nesta dica. Observe também o uso de uma ArrayList para guardar os valores da árvore binária na ordem depth-first. Eis o código: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.ArrayList; // implementação da classe No class No{ public int valor; // o valor do nó public No esquerdo; // o filho da esquerda public No direito; // o filho da direita public No(int valor){ this.valor = valor; this.esquerdo = null; this.direito = null; } } public class Estudos{ public static void main(String[] args){ // vamos criar os nós da árvore No cinco = new No(5); // será a raiz da árvore No quatro = new No(4); No nove = new No(9); No dois = new No(2); No tres = new No(3); No doze = new No(12); // vamos fazer a ligação entre os nós cinco.esquerdo = quatro; cinco.direito = nove; quatro.esquerdo = dois; nove.esquerdo = tres; nove.direito = doze; // agora já podemos efetuar o percurso depth-first ArrayList<Integer> valores = new ArrayList<>(); percursoDepthFirst(valores, cinco); System.out.println("Os valores na ordem Depth-First são: " + valores); } public static void percursoDepthFirst(ArrayList<Integer> valores, No no){ if(no != null){ // vamos adicionar o valor deste nó no ArrayList valores.add(no.valor); // passamos para o filho esquerdo percursoDepthFirst(valores, no.esquerdo); // passamos para o filho direito percursoDepthFirst(valores, no.direito); } } } Ao executarmos este código Java nós teremos o seguinte resultado: Os valores na ordem Depth-First são: [5, 4, 2, 9, 3, 12] Compare estes valores com a imagem vista anteriormente para entender ainda melhor o percurso ou busca Depth-First. |
Vamos testar seus conhecimentos em JavaScript |
Qual é a forma correta de se criar um array em JavaScript? A) var cores = ["vermelho", "verde", "azul"]; B) var cores = (1: "vermelho", 2: "verde", 3: "azul"); C) var cores = "vermelho", "verde", "azul"; D) var cores = 1: ("vermelho"), 2: ("verde"), 3: ("azul"); Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Dimensionamento de Redes de Distribuição de Água Qual a vazão necessária na tubulação que sai do reservatório em uma rede ramificada para um loteamento com a seguinte configuração, considerando que cada habitante consome 400 L/dia? A) 8,67 L/s. B) 16,42 L/s. C) 2,63 L/s. D) 17,33 L/s. E) 6,96 L/s. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Qual o resultado da execução do seguinte código Python?estados = {"SP": "SÃO PAULO", "GO": "GOIÁS", "RJ": "RIO DE JANEIRO"} estados.pop("RJ") print(estados) A) {'SP': 'SÃO PAULO', 'GO': 'GOIÁS'} B) {'RJ': 'RIO DE JANEIRO'} C) Um erro TypeError: pop expected at least 1 argument, got 0 na linha 3 D) {'SP': 'SÃO PAULO', 'GO': 'GOIÁS', 'RJ': 'RIO DE JANEIRO'} E) {'GO': 'GOIÁS', 'RJ': 'RIO DE JANEIRO'} Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Qual é o local correto para a inserção de códigos JavaScript em um documento HTML? A) Seção <head> B) Seção <body> C) Os códigos JavaScript podem ser colocados tanto na seção <head> quanto na seção <body> Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
Dimensionamento de Redes de Distribuição de Água A pergunta essencial que você tem de responder para dimensionar uma rede de abastecimento é: quantos litros de água você precisa distribuir para essa população? Quanto às redes de abastecimento podemos afirmar que: Selecione a resposta: A) O coeficiente de majoração k1 aplicado no cálculo da vazão que circula na rede, se refere ao fator de correção quanto ao dia de menor consumo. B) Pode-se obter o diâmetro mínimo da tubulação, dos condutos, ajudando a dimensionar as redes de distribuição em função das velocidades máximas e vazões máximas conforme normas técnicas. C) O coeficiente de majoração k2 aplicado no cálculo da vazão que circula na rede, se refere ao fator de correção quanto a hora de menor consumo. D) Ao dividir a vazão de distribuição pelo comprimento da rede (L), você obtém a vazão específica. E) A rede de abastecimento, e distribuição para uma região pode ser configurada em ramificada, em grelha, em cela e em diagonais. 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 |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |