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

From Wiki**3

 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{{TOCright}}}
+
{{NAVPO}}
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.
+
{{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. Apresentação e discussão de exemplos. Alguns aspectos da utilização de programação com classes e interfaces paramétricas.
+
Note-se que nem todos os tipos são igualmente importantes. Apresentam-se abaixo alguns dos mais salientes.
  
== Comparable vs. Comparator ==
+
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).
 
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.
+
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 ===
  
=== Exemplo de Comparable ===
+
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]]
  
=== Exemplo de Comparator ===
+
== Exercícios ==
  
=== Ver Também ===
+
* [[Colecções de Objectos/Registo de Gatos|Registo de Gatos]]
* http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Comparable.html
 
* http://java.sun.com/j2se/1.5.0/docs/api/java/util/Comparator.html
 
* [[]]
 
  
[[category:OOP]]
+
[[category: Ensino]]
[[category:Teaching]]
+
[[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