Você está aqui: Java ::: Coleções (Collections) ::: Passos Iniciais |
Entendendo a interface Set<E>Quantidade de visualizações: 19202 vezes |
A interface Set representa um coleção que não contém elementos duplicados. Mais formalmente, sets não contém pares de elementos e1 e e2, de modo que e1.equals(e2), e no mínimo um elemento null. Como seu nome diz, esta interface modela a abstração matemática de conjuntos. Entre as classes que implementam esta interface podemos citar: AbstractSet, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet e TreeSet. A interface Set acrescenta algumas estipulações, além daquelas herdadas da interface Collection, nos contratos de todos os construtores e nos contratos dos métodos add, equals e hashCode. A estipulação adicional nos construtores é de que os construtores devem criar um conjunto que não contenha elementos duplicados. Obs: Muito cuidado deve ser tomado se objetos mutáveis forem usados como elementos de conjuntos. O comportamente de um conjunto não é especificado se o valor de um objeto é alterado de forma a afetar a comparação equals enquanto o objeto for um elemento do set. Um caso especial desta proibição é que não é permitido que um set contenha a si mesmo como elemento. Algumas implementações de set apresentam restrições em relação aos elementos que elas podem conter. Por exemplo, algumas implementações não aceitam o elemento null, e algumas têm restrições em relação ao tipo de seus elementos. Tentar adicionar um elemento não permitido pode atirar uma exceção não verificada, geralmente NullPointerException ou ClassCastException. Tentar verificar a presença de um elemento não permitido pode atirar uma exceção, ou simplesmente retornar false; algumas implementações podem exibir o primeiro comportamento e outras podem exibir o segundo. Mais comumente, tentar um operação em um elemento não permitido, cuja finalização não resultaria na inserção do elemento não permitido no set, pode atirar uma exceção ou obter sucesso. Tudo depende das opções fornecidas pela implementação. Tais exceções são marcadas "optional" em sua especificação. |
![]() |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas |
Exercícios Resolvidos de Java - Como inserir no final de uma lista ligada em Java - Escreva um programa Java que pede para o usuário informar váriosQuantidade de visualizações: 859 vezes |
Pergunta/Tarefa: Este exercício Java demonstra como inserir um nó no final de uma lista ligada. Escreva um programa Java que cria uma lista ligada, ou seja, uma lista dinamicamente encadeada, e pede para o usuário informar vários valores inteiros, colocando os valores sempre no final da lista. Seu código deverá interromper a leitura dos valores quando o usuário informar o valor -1. Quando isso acontecer, mostre todos os valores contidos na lista ligada, na mesma ordem que foram inseridos (o último valor lido será o último da lista). Sua saída deve ser parecida com: Inserindo valores no final da lista Informe o valor (-1 para sair): 3 Informe o valor (-1 para sair): 9 Informe o valor (-1 para sair): 1 Informe o valor (-1 para sair): 5 Informe o valor (-1 para sair): 2 Informe o valor (-1 para sair): -1 Valores na lista: 3 -> 9 -> 1 -> 5 -> 2 -> null 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; // classe interna usada para representar um // nó na lista ligada class No { int valor; // valor do nó No proximo; // aponta para o novo nó // construtor da classe No No(int valor, No proximo) { this.valor = valor; this.proximo = proximo; } } public class Estudos { public static void main(String args[]){ // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos criar uma referência para o início da lista No inicio = null; // agora vamos pedir para o usuário informar // valores inteiros. O valor -1 sai do laço int valor; System.out.println("Inserindo valores no final da lista\n"); do { System.out.print("Informe o valor (-1 para sair): "); valor = Integer.parseInt(entrada.nextLine()); if (valor != -1) { inicio = inserirFinal(inicio, valor); } } while(valor != -1); // vamos exibir os valores na lista ligada System.out.print("\nValores na lista: "); exibirLista(inicio); } // função que permite adicionar um nó no final da // lista ligada public static No inserirFinal(No inicio, int valor) { // vamos apontar para o nó inicial No atual = inicio; // criamos um novo nó No novo = criarNo(valor); // a lista ligada ainda está vazia? if (atual == null){ // inicio recebe o novo nó inicio = novo; } else { // temos um ou mais nós na lista ligada // vamos localizar o último nó while (atual.proximo != null) { atual = atual.proximo; } // encontramos o último nó. Agora vamos inserir // o novo nó depois dele atual.proximo = novo; } // e retornamos o início da lista return inicio; } // função usada para construir e retornar um novo nó public static No criarNo(int valor) { // cria o novo nó No no = new No(valor, null); // retorna o nó criado return no; } // função usada para percorrer a lista ligada e // exibir os valores contidos em seus nós public static void exibirLista(No inicio) { // vamos apontar para o início da lista No temp = inicio; // a lista está vazia? if (temp == null) { System.out.println("A lista está vazia."); } else { // esse laço se repete enquanto tempo for // diferente de null while (temp != null) { // vamos mostrar o valor desse nó System.out.print(temp.valor + " -> "); // avança para o próximo nó temp = temp.proximo; } // mostra o final da lista System.out.println("null"); } } } |
Java ::: Coleções (Collections) ::: ArrayList |
Como ordernar uma ArrayList de Strings em ordem alfabética usando o método sort() da classe Collections da linguagem JavaQuantidade de visualizações: 22759 vezes |
Neste exemplo mostrarei como podemos ordenar um ArrayList de Strings em ordem alfabética. Para isso usaremos o método sort() da classe Collections. É importante observar que estou usando String no exemplo. Se você quiser usar objetos de suas próprias classes, elas precisarão implementar a interface Comparable. 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.ArrayList; import java.util.Collections; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conterá strings ArrayList<String> nomes = new ArrayList<>(); // adiciona itens na lista nomes.add("Carlos"); nomes.add("Maria"); nomes.add("Fernanda"); nomes.add("Osmar"); // exibe os elementos da ArrayList for(int i = 0; i < nomes.size(); i++){ System.out.println(nomes.get(i)); } // Vamos ordenar os elementos Collections.sort(nomes); // exibe os elementos da ArrayList System.out.println(); for(int i = 0; i < nomes.size(); i++){ System.out.println(nomes.get(i)); } System.exit(0); } } Ao executarmos este código nós teremos o seguinte resultado: Carlos Maria Fernanda Osmar Carlos Fernanda Maria Osmar Este código foi testado no Java 8. |
Java ::: Classes e Componentes ::: JTable |
Java Swing - Como colorir o fundo das células de uma JTable baseado em seus valoresQuantidade de visualizações: 10 vezes |
Nesta dica veremos como é possível criar uma classe personalizada que extende a classe JLabel e implementa a interface TableCellRenderer e usá-la como renderizador das células de uma JTable. Dessa forma conseguiremos aplicar uma cor diferente a cada célula dependendo do seu valor. Veja o resultado na figura abaixo:![]() Veja agora o código Java Swing 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; import javax.swing.*; import java.awt.*; import javax.swing.table.*; public class Estudos extends JFrame{ public Estudos(){ super("Exemplo de uma tabela simples"); // colunas da tabela String[] colunas = {"Nome", "Idade", "Sexo"}; // conteúdo da tabela Object[][] conteudo = { {"Osmar J. Silva", "32", "Masculino"}, {"Maria Clara Gomes", "19", "Feminino"}, {"Fernando Gomes", "15", "Masculino"}, {"Carlos Vieira", "40", "Masculino"} }; // constrói a tabela JTable tabela = new JTable(conteudo, colunas); // quero colorir o fundo das células da segunda coluna // se o valor encontrado for menor que 20 TableCellRenderer tcr = new Colorir(); TableColumn column = tabela.getColumnModel().getColumn(1); column.setCellRenderer(tcr); tabela.setPreferredScrollableViewportSize(new Dimension(350, 50)); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(tabela); c.add(scrollPane); setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class Colorir extends JLabel implements TableCellRenderer{ public Colorir(){ setOpaque(true); } @Override public Component getTableCellRendererComponent( JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){ if(Integer.parseInt(value.toString()) < 20){ setBackground(Color.YELLOW); } else{ setBackground(table.getBackground()); } setText(value.toString()); return this; } @Override public void validate() {} @Override public void revalidate() {} @Override protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {} @Override public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {} } |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
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 |