Difference between revisions of "Colecções de Objectos"

From Wiki**3

 
 
(34 intermediate revisions by the same user not shown)
Line 1: Line 1:
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.
+
{{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
  
[[category:PO 2005/2006]]
+
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 ==
 +
 
 +
Estruturas de armazenamento:
 +
* 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>], ...
 +
 
 +
Estruturas de apoio:
 +
* Interfaces: [http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html Iterator<T>], [http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html Comparator<T>], [http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html Comparable<T>], ...
 +
 
 +
Utilitários:
 +
* [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]
 +
 
 +
== 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/8/docs/api/java/util/Comparator.html
 +
* http://docs.oracle.com/javase/8/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.
 +
 
 +
* [[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:PO]]

Latest revision as of 08:37, 3 October 2024

Programação com Objectos
Introduction
Creation and Destruction
Inheritance & Composition
Abstraction & Polymorphism
Code Organization
Java Topics
Inner Classes
Enumerations
Data Structures
Exceptions
Input/Output
RTTI
Other Topics
JUnit Tests
UML Topics
Design Patterns
"Simple" Factory
Composite & Visitor
Command
Strategy & State
Template Method
Observer
Abstract Factory
Decorator & Adapter
Façade (aka Facade)

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.

Alguns tipos salientes

Estruturas de armazenamento:

Estruturas de apoio:

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.

Ver também:

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:

ArrayList

Este exemplo apresenta a utilização de um ArrayList.

Exercícios