Ordenando Coleções A Classe Collections.

Slides:



Advertisements
Apresentações semelhantes
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Advertisements

Java Generics Adeline de Sousa Silva.
Coleções em Java (Parte 1)
IDENTIFICAÇÃO DOS RELACIONAMENTOS Nesta atividade devem ser definidos os relacionamentos entre as classes Podem ser representados pela: – associação, –
Tratamento de exceções em Java Prof. Gustavo Wagner (Alterações) Prof. Tiago Massoni (Slides Originais) Desenvolvimento de Sistemas FATEC-PB  Centro de.
CLASSES EM JAVA Dilvan Moreira (baseado no livro Big Java)
Disciplina:PROA3V José Henrique Verhalem e Renan Tenório Professor: Alexandre Cassimiro Novembro 2015.
Introdução à Informática com Software Livre 11:37.
Linguagem de Programação – Aula 03 Prof. Me. Ronnison Reges Vidal.
Categorias Computacionais N Um modelo categorial para bancos de dados Vítor De Araújo
Disciplina: Estrutura de Dados Professor: Jeovane Reges Caxias – MA 2015 ACULDADE DE CIÊNCIAS E TECNOLOGIA DO MARANHÃO.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Classes Objetos Atributos Métodos Coletor de Lixo (Garbage Collector ) Confraria do Java Nivelamento. Caroline, Marcelo e Luiz 12/05/2007.
Generalização, Especialização e Conceitos Carlos Bazilio Depto de Ciência e Tecnologia Pólo Universitário de Rio das Ostras Universidade Federal Fluminense.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal
Ordenação dos Elementos de um Vetor - Bubble Sort e Quick Sort .
Linguagens de Programação Conceitos e Técnicas
UML – Diagramas de componentes
Métodos de Pesquisa: Seqüencial e Binária
3.1 Classes e Objetos Em um programa orientado a objetos normalmente existem vários objetos de um mesmo tipo. Por exemplo, um programa de controle de.
Capítulo VIII – Técnicas de Ordenação
Java: Interfaces Alcides Calsavara.
Criação e manipulação de objetos
Unidade IV– Relacionamento entre Objetos
UML – Diagramas de Componentes e Modelação da Arquitectura Física
Edson Susumu Asaga JavaBeans Edson Susumu Asaga
Arquitetura de Computadores
IP – Repetições Prof. Eduardo Falcão.
Programação Orientada a Objetos
CES-11 ALGORITMOS E ESTRUTURAS DE DADOS
Programação Orientada a Objetos
Desenvolvimento Androd Prof. Rone Ilídio
Tipos de Arquivos Arquivos podem armazenar caracteres (arquivo texto) ou bytes (arquivos binários); Na prática, arquivos textos são abertos por editores.
Programação Orientada a Objetos
Capítulo 20 Coleções genéricas
Desenvolvimento de Sistemas Orientados a Objetos
Elaborando as Interfaces Aulas 37, 38 e 39.
Remote Method Invocation
Entrada e Saída de Dados com Arquivos – Java
Programação Orientada a Objetos*
Complexidade de Algoritmos
Rosemary Silveira Filgueiras Melo
Pacotes Servem para organizar o código, por exemplo, agrupar classes correlatas. Vamos supor uma classe Ponto2D pertencente ao pacote formas. A classe.
3.2 Sobrecarga de Métodos (Overloading)
Programação Orientada a Objetos*
Rosemary Silveira Filgueiras Melo
Programação Orientada a Objetos
3.1.7 Variáveis de Classe e Instância
Árvores Binárias de Pesquisa e Balanceamento usando Árvores AVL
Laboratório I Mateus Raeder.
Programação Funcional
Rosemary Silveira Filgueiras Melo
Visual Basic TCP.
Filas.
ALGORITMOS.
Teste de Software 04: Que parte devo testar?
DHD – Desenvolvimento em Hardware
Leitura do teclado e Interface gráfica
Tipos Primitivos de Dados
Prof. Rafael Mesquita Listas Encadeadas Prof. Rafael Mesquita
A classe String.
A interface java.util.List
Programação Orientada a Objetos
Constantes, Variáveis e Memória
Operadores Lógicos e Relacionais
Operadores Aritméticos
RESULUÇÃO DOS EXERCÍCIOS E
Percorrendo coleções com Iterator
Aula 7 Professores: Conteúdo: Dante Corbucci Filho
Programação de Computadores II
Transcrição da apresentação:

Ordenando Coleções A Classe Collections

Ordenação: Collections.Sort Vamos dar uma olhada na classe java.util.Collections. A classe Collections fornece vários algoritmos de alto desempenho para manipular elementos de coleção. Os algoritmos são implementados como métodos static. No exemplo utilizaremos a implementação ArrayList.

Ordenação: Collections.Sort Vimos que as listas são percorridas de maneira pré- determinada de acordo com a inclusão dos itens. Mas, muitas vezes, queremos percorrer a nossa lista de maneira ordenada. A classe Collections traz um método estático sort que recebe um List como argumento e o ordena por ordem crescente. Por exemplo: List<String> lista = new ArrayList<>(); lista.add("Sérgio"); lista.add("Paulo"); lista.add("Guilherme"); System.out.println(lista); Collections.sort(lista); System.out.println(lista);

Ordenação: Collections.Sort Mas toda lista em Java pode ser de qualquer tipo de objeto, por exemplo, ContaCorrente. E se quisermos ordenar uma lista de ContaCorrente? Em que ordem a classe Collections ordenará? Pelo saldo? Pelo nome do correntista? ContaCorrente c1 = new ContaCorrente(); c1.deposita(500); ContaCorrente c2 = new ContaCorrente(); c2.deposita(200); List<ContaCorrente> contas = new ArrayList<>(); contas.add(c1); contas.add(c2); Collections.sort(contas); // qual seria o critério para esta ordenação? É necessário instruir o sort sobre como comparar nossas ContaCorrente a fim de determinar uma ordem na lista.

Ordenação: Collections.Sort Para isto, o método sort necessita que todos seus objetos da lista sejam comparáveis e possuam um método que se compara com outra ContaCorrente Como é que o método sort terá a garantia de que a sua classe possui esse método? Isso será feito, novamente, através de um contrato, de uma interface! Vamos fazer com que os elementos da nossa coleção implementem a interface java.lang.Comparable, que define o método int compareTo(Object).

Ordenação: Collections.Sort Para ordenar as Contas implementar o Comparable: Correntes por saldo, basta public class ContaCorrente extends Conta implements Comparable<ContaCorrente> { // ... todo o código anterior fica aqui public int compareTo(ContaCorrente outra) { if (this.saldo < outra.saldo) { return -1; } if (this.saldo > outra.saldo) { return 1; return 0;

Ordenação: Collections.Sort O critério de ordenação é totalmente aberto, definido pelo programador. Se quisermos ordenar por outro atributo (ou até por uma combinação de atributos), basta modificar a implementação do método compareTo na classe Quando chamarmos o método sort de Collections, ele saberá como fazer a ordenação da lista; ele usará o critério que definimos no método compareTo.

Ordenação: Collections.Sort Mas, e o exemplo anterior, com uma lista de Strings? Por que a ordenação funcionou, naquele caso, sem precisarmos fazer nada? Simples: quem escreveu a classe String (lembre que ela é uma classe como qualquer outra) implementou a interface Comparable e o método compareTo para Strings, fazendo comparação em ordem alfabética. Consulte a documentação da classe String e veja o método compareTo lá. O mesmo acontece com outras classes como Integer, BigDecimal, Date, entre outras.

Exemplo de uso do método sort import java.util.*; public class TesteOrdenacao { public static void main(String[] args) { List listaDesordenada = new ArrayList(); listaDesordenada.add("Jose"); listaDesordenada.add("Maria"); listaDesordenada.add("Joao"); listaDesordenada.add("Airton"); listaDesordenada.add("Zulima"); // Imprima a lista desordenada Collections.sort(listaDesordenada); // Imprima a lista ordenada }

Outros Métodos da Classe Collections binarySearch(List, Object): Realiza uma busca binária por determinado elemento na lista ordenada e retorna sua posição ou um número negativo, caso não encontrado max(Collection): Retorna o maior elemento da coleção. min(Collection): Retorna o menor elemento da coleção. reverse(List): Inverte a lista. ...e muitos outros. Consulte a documentação para ver outros métodos.

Outros Métodos da Classe Collections 2010 Pearson Education, Inc.

Exemplo com List import java.util.*; public class Mistura { public static void main(String args[]) List l = new ArrayList(); for (int i=0; i<args.length; i++) l.add(args[i]); Collections.shuffle(l, new Random()); System.out.println(l); }