Colecções de Objectos: Difference between revisions
From Wiki**3
No edit summary |
No edit summary |
||
Line 24: | Line 24: | ||
* [http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html Arrays], [http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html Collections] | * [http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html Arrays], [http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html Collections] | ||
== java.lang.Comparable and java.util.Comparator == | == Exemplos == | ||
=== java.lang.Comparable and java.util.Comparator === | |||
No primeiro caso, são as instâncias da própria classe as responsáveis por saber comparar-se com outras (e, como só pode haver um método com uma determinada interface, isso significa que o uso da interface Comparable apenas permite um método de comparação). As classes que implementam Comparator, pelo contrário, permitem a definição de um número arbitrário de estratégias de comparação de instâncias das classes que comparam (um método de comparação por classe). | No primeiro caso, são as instâncias da própria classe as responsáveis por saber comparar-se com outras (e, como só pode haver um método com uma determinada interface, isso significa que o uso da interface Comparable apenas permite um método de comparação). As classes que implementam Comparator, pelo contrário, permitem a definição de um número arbitrário de estratégias de comparação de instâncias das classes que comparam (um método de comparação por classe). | ||
Line 30: | Line 32: | ||
A vantagem do uso da primeira está no menor número de classes. No entanto, a segunda, sem aumentar a complexidade de forma significativa (as classes de comparação são muito simples), contribui para a flexibilidade da aplicação nos aspectos relativos à comparação de objectos. | A vantagem do uso da primeira está no menor número de classes. No entanto, a segunda, sem aumentar a complexidade de forma significativa (as classes de comparação são muito simples), contribui para a flexibilidade da aplicação nos aspectos relativos à comparação de objectos. | ||
* [[Classes Internas (Java)/Comparações em Java]] | * [[Classes Internas (Java)/Comparações em Java]] | ||
* [[Classes Internas (Java)/Exercício 01: Interfaces java.lang.Comparable e java.util.Comparator]] | * [[Classes Internas (Java)/Exercício 01: Interfaces java.lang.Comparable e java.util.Comparator]] | ||
Ver também: | |||
* http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html | * http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html | ||
* http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html | * http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html | ||
* [[Strategy Pattern (padrão de desenho)]] | * [[Strategy Pattern (padrão de desenho)]] | ||
== java.lang.Iterable and java.util.Iterator == | === java.lang.Iterable and java.util.Iterator === | ||
Este exemplo explica e implementa classes que fazem uso das interfaces de iteração Java. Os iteradores são tipicamente implementados como classes internas. | Este exemplo explica e implementa classes que fazem uso das interfaces de iteração Java. Os iteradores são tipicamente implementados como classes internas. |
Revision as of 20:18, 29 October 2013
Organização de objectos em colecções. Colecções em Java: vectores primitivos e a hierarquia de colecções. Uso de tipos paramétricos (generics). Apresentação de interfaces de topo: Collection, Set, List. Exemplo com LinkedList. Iteradores. Exemplo de utilização de iteradores. A interface Iterable e o uso de foreach: iteração implícita. Apresentação e discussão de exemplos.
Classes utilitárias Collections e Arrays e o uso de algoritmos abstractos. Interfaces Comparable e Comparator. Discussão das diferenças. A interface Map. Apresentação e discussão de exemplos. Alguns aspectos da utilização de programação com classes e interfaces paramétricas.
A linguagem Java apresenta um conjunto de estruturas de armazenamento e gestão de dados designada por Java Collections Framework. Estes conceitos são apresentados, assim como as opções que presidiram ao seu desenho na página correspondente do manual Java: http://docs.oracle.com/javase/7/docs/technotes/guides/collections/overview.html
Note-se que nem todos os tipos são igualmente importantes. Apresentam-se abaixo alguns dos mais salientes.
Alguns tipos salientes
Estruturas de armazenamento:
- Colecções e iteráveis (interfaces): Iterable<T>, Collection<T>, List<T>, Set<T>, ...
- Colecções e iteráveis (classes): ArrayList<T>, LinkedList<T>, ...
- Mapas: Map<K,V> (interface), TreeMap<K,V>, HashMap<K,V>, LinkedHashMap<K,V>, ...
Estruturas de apoio:
- Interfaces: Iterator<T>, Comparator<T>, Comparable<T>, ...
Utilitários:
Exemplos
java.lang.Comparable and java.util.Comparator
No primeiro caso, são as instâncias da própria classe as responsáveis por saber comparar-se com outras (e, como só pode haver um método com uma determinada interface, isso significa que o uso da interface Comparable apenas permite um método de comparação). As classes que implementam Comparator, pelo contrário, permitem a definição de um número arbitrário de estratégias de comparação de instâncias das classes que comparam (um método de comparação por classe).
A vantagem do uso da primeira está no menor número de classes. No entanto, a segunda, sem aumentar a complexidade de forma significativa (as classes de comparação são muito simples), contribui para a flexibilidade da aplicação nos aspectos relativos à comparação de objectos.
- Classes Internas (Java)/Comparações em Java
- Classes Internas (Java)/Exercício 01: Interfaces java.lang.Comparable e java.util.Comparator
Ver também:
- http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html
- http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html
- Strategy Pattern (padrão de desenho)
java.lang.Iterable and java.util.Iterator
Este exemplo explica e implementa classes que fazem uso das interfaces de iteração Java. Os iteradores são tipicamente implementados como classes internas.
Ver também: