Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Java Collection Framework (JCF)
JCF contient :
* Interfaces
* Implémentations
* Algorithmes
Avantages :
* moins d'efforts
* plus d'efficacité et de qualité
* liens plus faciles entre différentes APIs
* code plus réutilisable
```mermaid
classDiagram
Collection <|-- Set
Collection <|-- List
Collection <|-- Queue
Set <|-- HashSet
HashSet <|-- LinkedHashSet
Set <|-- SortedSet
SortedSet <|-- TreeSet
List <|-- ArrayList
List <|-- Stack
List <|-- LinkedList
Queue <|-- LinkedList
Queue <|-- PriorityQueue
Map <|-- SortedMap
SortedMap <|-- TreeMap
Map <|-- HashMap
HashMap <|-- LinkedHashMap
<<interface>> Collection
<<interface>> Set
<<interface>> List
<<interface>> Queue
<<interface>> SortedSet
<<interface>> Map
<<interface>> SortedMap
```
## Interface [`Collection`](https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/Collection.html)
```java
interface Collection<E> {
// opérations de base
int size();
boolean isEmpty();
boolean contains(Object o);
boolean add(E e); // facultative
boolean remove(Object o); // facultative
// opérations de masse
boolean containsAll(Collection<?> c);
boolean addAll(Collection<? extends E> c); // facultative
boolean removeAll(Collection<?> c); // facultative
boolean retainAll(); // facultative
void clear(); // facultative
// opérations tableaux
Object[] toArray();
<T> T toArray(T[] a);
// itérateur
Iterator<E> iterator();
}
```
Méthodes facultatives : `UnsupportedOperationException`.
En plus de ces méthodes, chaque implémentation doit contenir un constructeur par défaut et un constructeur par recopie
```java
public class MyCollection<E> implements Collection<E> {
public MyCollection() {
// crée une collection vide
}
public MyCollection(Collection<? extends E> c) {
// crée une collection qui contient les mêmes éléments que c
}
}
```