Você está aqui: Java ::: Pacote java.util ::: Comparator |
Como escrever uma classe que implementa a interface Comparator para controlar a ordenação dos elementos de uma coleçãoQuantidade de visualizações: 2558 vezes |
Nesta dica eu mostro como escrever uma classe que implementa a interface Comparator para controlar a ordenação dos elementos de uma coleção. No exemplo mostro também como usar constantes para definir a forma de ordenação. Vamos começar criando uma classe Livro. Veja o código:---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; public class Livro{ // para simplificar o exemplo não usarei encapsulamento de dados String titulo; int paginas; // construtor não padrão public Livro(String titulo, int paginas){ this.titulo = titulo; this.paginas = paginas; } } Agora vamos criar a classe que implementará a interface Comparator: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Comparator; public class OrdenacaoLivros implements Comparator<Livro>{ // constantes que permitem definir o tipo de ordenação a ser realizada public final static int TITULO = 1; public final static int PAGINAS = 2; private int tipoOrdenacao; // guarda o tipo da ordenação desejada public OrdenacaoLivros(int tipoOrdenacao){ this.tipoOrdenacao = tipoOrdenacao; } // sobrescreve o método compare() e faz a ordenação de acordo com o critério desejado @Override public int compare(Livro a, Livro b){ // ordenação por páginas? if(this.tipoOrdenacao == OrdenacaoLivros.PAGINAS){ return a.paginas - b.paginas; } // ordenação por título? else if(this.tipoOrdenacao == OrdenacaoLivros.TITULO){ return a.titulo.compareTo(b.titulo); } else{ // ordenação desconhecida System.out.println("Ordenação desconhecida"); return 0; } } } Note que o método compare() testa o tipo de ordenação para classificar os livros de acordo com o número de páginas ou ordem alfabética do título. Finalmente, veja o código para a classe principal da aplicação: ---------------------------------------------------------------------- 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; import java.util.Collections; public class Estudos{ public static void main(String[] args) { // vamos criar uma ArrayList de objetos da classe Livro ArrayList<Livro> livros = new ArrayList(); livros.add(new Livro("Programando em Java", 259)); livros.add(new Livro("A Bíblia do Delphi", 1043)); livros.add(new Livro("Aprenda PHP e MySQL", 127)); livros.add(new Livro("Tutorial Básico de JSF", 41)); // vamos ordenar os elementos do ArrayList usando o método sort() da classe Collectons // e fornecendo um objeto OrdenacaoLivros com o critério de ordenação por páginas Collections.sort(livros, new OrdenacaoLivros(OrdenacaoLivros.PAGINAS)); // vamos percorrer e exibir os valores dos elementos ordenados por quantidade de página for(Livro livro : livros){ System.out.println("Título: " + livro.titulo + "; Páginas: " + livro.paginas); } // vamos ordenar os elementos do ArrayList usando o método sort() da classe Collectons // e fornecendo um objeto OrdenacaoLivros com o critério de ordenação por título Collections.sort(livros, new OrdenacaoLivros(OrdenacaoLivros.TITULO)); // vamos percorrer e exibir os valores dos elementos ordenados por título System.out.println(); for(Livro livro : livros){ System.out.println("Título: " + livro.titulo + "; Páginas: " + livro.paginas); } } } Ao executarmos este exemplo nós teremos o seguinte resultado: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- Título: Tutorial Básico de JSF; Páginas: 41 Título: Aprenda PHP e MySQL; Páginas: 127 Título: Programando em Java; Páginas: 259 Título: A Bíblia do Delphi; Páginas: 1043 Título: A Bíblia do Delphi; Páginas: 1043 Título: Aprenda PHP e MySQL; Páginas: 127 Título: Programando em Java; Páginas: 259 Título: Tutorial Básico de JSF; Páginas: 41 |
![]() |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar a representação numérica de um caractere em Java fazendo um cast de char para intQuantidade de visualizações: 70 vezes |
Um cast forçado de char para int é uma das formas mais práticas para se obter a representação numérica de um caractere em Java. Tudo que precisamos fazer é usar o método charAt() da classe String para obtermos o caractere na posição desejada de um texto, frase ou palavra e, em seguida, convertê-lo (cast) para um int. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; // Este exemplo mostra como obter a representação // númerica de um caractere public class Estudos{ public static void main(String[] args){ String frase = "Programando em Java"; for(int i = 0; i < frase.length(); i++){ int valor = (int)frase.charAt(i); System.out.println(frase.charAt(i) + " = " + valor); } System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- P = 80 r = 114 o = 111 g = 103 r = 114 a = 97 m = 109 a = 97 n = 110 d = 100 o = 111 = 32 e = 101 m = 109 = 32 J = 74 a = 97 v = 118 a = 97 |
Java ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular desvio padrão em Java - Java para Matemática e EstatísticaQuantidade de visualizações: 2849 vezes |
Em Matemática e Estatística, o Desvio padrão (em inglês: Standard Deviation) é uma medida de dispersão, ou seja, é uma medida que indica o quanto um conjunto de dados é uniforme. Quando o desvio padrão é baixo, isso quer dizer que os dados do conjunto estão mais próximos da média. Como calcular o desvio padrão de um conjunto de dados? Vamos começar analisando a fórmula mais difundida na matemática e na estatística: \[\sigma = \sqrt{ \frac{\sum_{i=1}^N (x_i -\mu)^2}{N}}\] Onde: a) __$\sigma__$ é o desvio; b) __$x_i__$ é um valor qualquer no conjunto de dados na posição i; c) __$\mu__$ é a média aritmética dos valores do conjunto de dados; d) N é a quantidade de valores no conjunto. O somatório dentro da raiz quadrada nos diz que devemos somar todos os elementos do conjunto, desde a posição 1 até a posição n, subtrair cada valor pela média do conjunto e elevar ao quadrado. Obtida a soma, nós a dividimos pelo tamanho do conjunto. Veja o código Java completo que obtém o desvio padrão a partir de um conjunto de dados contendo quatro valores: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; public class Estudos{ public static void main(String args[]){ // conjunto dos dados double conjunto[] = {10, 30, 90, 30}; double soma = 0.0; // soma dos elementos double desvioPadrao = 0.0; // desvio padrão int tam = conjunto.length; // tamanho dos dados // vamos somar todos os elementos for(int i = 0; i < tam; i++){ soma = soma + conjunto[i]; } // agora obtemos a média do conjunto de dados double media = soma / tam; // e finalmente obtemos o desvio padrão for(int i = 0; i < tam; i++){ desvioPadrao = desvioPadrao + Math.pow(conjunto[i] - media, 2); } // mostramos o resultado System.out.println("Desvio Padrão Populacional: " + Math.sqrt(desvioPadrao / tam)); System.out.println("Desvio Padrão Amostral: " + Math.sqrt(desvioPadrao / (tam - 1))); } } Ao executar este código Java nós teremos o seguinte resultado: Desvio Padrão Populacional: 30.0 Desvio Padrão Amostral: 34.64101615137755 Veja que, para calcular o Desvio Padrão Populacional, nós dividimos o somatório pela quantidade de elementos no conjunto, enquanto, para calcular o Desvio Padrão Amostral, nós dividimos o somatório pela quantidade de elementos - 1 (cuidado com a divisão por zero no caso de um conjunto com apenas um elemento). |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Matemática e Estatística |
Exercícios Resolvidos de Java - Como converter de decimal para números romanos em JavaQuantidade de visualizações: 553 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede para o usuário informar um número inteiro decimal e converta-o para o número romano correspondente. Sua saída deverá ser parecida com: Informe um número decimal: 2023 O número romano correspondente é: MMXXIII Veja a resolução comentada deste exercício usando Java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos criar um array com os valores decimais possíveis de // cada número romano int valoresNumerosRomanos[] = new int[]{1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; // representação dos números romanos String numerosRomanos[] = new String[]{"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; // vamos pedir para o usuário informar um número decimal System.out.print("Informe um número decimal: "); int numero = Integer.parseInt(entrada.nextLine()); // para guardar o resultado String resultado = ""; // o número é maior que zero? if (numero > 0) { // percorremos o array de valores decimais dos números romanos for(int i = 0;i < valoresNumerosRomanos.length; i++){ // enquanto o número informado for maior que o valor do // do número romano atual while(numero >= valoresNumerosRomanos[i]){ // reduz o número informado numero = numero - valoresNumerosRomanos[i]; // concatena o número romano e continua o cálculo resultado = resultado + numerosRomanos[i]; } } } // mostramos o resultado if(resultado.isEmpty()){ System.out.println("O número informado não possui número romano"); } else{ System.out.println("O número romano correspondente é: " + resultado); } } } |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
JavaScript - JavaScript para iniciantes - Como obter o valor do maior número possível em JavaScript usando Number.MAX_VALUE |
Códigos Fonte |
![]() 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 |
![]() 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 |