(→Alguns tipos salientes) |
|||
(14 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{NAVPO}} | {{NAVPO}} | ||
− | + | {{TOCright}} | |
− | + | 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: | ||
+ | https://docs.oracle.com/en/java/javase/23/core/java-collections-framework.html | ||
− | Classes utilitárias Collections e Arrays e o uso de algoritmos abstractos. Interfaces Comparable e Comparator. Discussão das diferenças. A interface Map | + | Note-se que nem todos os tipos são igualmente importantes. Apresentam-se abaixo alguns dos mais salientes. |
+ | |||
+ | 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. | ||
== Alguns tipos salientes == | == Alguns tipos salientes == | ||
Estruturas de armazenamento: | Estruturas de armazenamento: | ||
− | * Colecções e iteráveis: [http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html Iterable<T>] | + | * Colecções e iteráveis (interfaces): [http://docs.oracle.com/javase/7/docs/api/java/lang/Iterable.html Iterable<T>], [http://docs.oracle.com/javase/7/docs/api/java/util/Collection.html Collection<T>], [http://docs.oracle.com/javase/7/docs/api/java/util/List.html List<T>], [http://docs.oracle.com/javase/7/docs/api/java/util/Set.html Set<T>], ... |
+ | * Colecções e iteráveis (classes): [http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html ArrayList<T>], [http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html LinkedList<T>], ... | ||
* Mapas: [http://docs.oracle.com/javase/7/docs/api/java/util/Map.html Map<K,V>] (interface), [http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html TreeMap<K,V>], [http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html HashMap<K,V>], [http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html LinkedHashMap<K,V>], ... | * Mapas: [http://docs.oracle.com/javase/7/docs/api/java/util/Map.html Map<K,V>] (interface), [http://docs.oracle.com/javase/7/docs/api/java/util/TreeMap.html TreeMap<K,V>], [http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html HashMap<K,V>], [http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html LinkedHashMap<K,V>], ... | ||
Line 17: | 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 23: | 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/ | + | * http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html |
− | * http://docs.oracle.com/javase/ | + | * http://docs.oracle.com/javase/8/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. | ||
− | |||
* [[Classes Internas (Java)/Gatos Iteráveis]] | * [[Classes Internas (Java)/Gatos Iteráveis]] | ||
− | === | + | Ver também: |
+ | * http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html | ||
+ | * http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html | ||
+ | |||
+ | === ArrayList === | ||
+ | |||
+ | Este exemplo apresenta a utilização de um ArrayList. | ||
+ | * [[Composite (padrão de desenho)/Exercício 3: Construção e Visualização de Páginas]] | ||
− | + | == Exercícios == | |
− | |||
+ | * [[Colecções de Objectos/Registo de Gatos|Registo de Gatos]] | ||
− | [[category:Ensino]] | + | [[category: Ensino]] |
[[category:PO]] | [[category:PO]] |
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: https://docs.oracle.com/en/java/javase/23/core/java-collections-framework.html
Note-se que nem todos os tipos são igualmente importantes. Apresentam-se abaixo alguns dos mais salientes.
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.
Estruturas de armazenamento:
Estruturas de apoio:
Utilitários:
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.
Ver também:
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:
Este exemplo apresenta a utilização de um ArrayList.