Chapitre 3 Flashcards

1
Q

On peut contenir des primitives dans une ArrayList V/F ?

A

Faux, ArrayList contient des objets

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Combien de façon il y a pour implémenter une interface générique ?

A

3 façons :
- spécifier le type du generics dans la classe : class ShippableRobot implements Shippable<Robot></Robot>

  • créer une classe générique et laisser l’appelant de choisir le type du générique : class ShippableAbstractCrate<u> implements Shippable<u></u></u>
  • ne pas utiliser de generic et de mettre le type objet dans la méthode de la classe

Voir page 112-113 pour plus d’explications

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Montre moi une déclaration de type générique sur une méthode.

A

public static <T> Crate<T> ship(T t) {
...
}</T></T>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Comment appeler une méthode générique ?

A

Deux façons :
- implicitement : on appelle normalement la méthode avec les paramètres et le compilateur saura quel type
- explicitement : MyClass.<String>method("package");</String>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

C’est quoi du legacy code ? Montre moi un exemple

A

Du legacy code c’est du vieux code.

Par exemple c’est du code qui n’utilise pas les generics (List unicorns = new ArrayList();)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Que se passe t’il quand on ajoute un primitif à une List ?

A

Java l’autoboxe en son Wrapper !!!! Car une List prends des Objects et pas des primitives

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Explique le principe de Unbounded Wildcards

A
  • C’est quand tu mets ? dans les generics pour dire que tu peux avoir n’importe quelle type dans un generic

Tu ne peux pas faire List<Integer> numbers = new ArrayList<>();
List<object> objects = numbers; // ne compile pas</object></Integer>

Le compilateur nous protège car on pourrait ajouter une String par la suite

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Est ce qu’on peut faire ?
ArrayList<Number> list = new ArrayList<Integer>()</Integer></Number>

A

Non, pour nous protéger d’assigner une liste de Number dans une liste d’Objet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Si j’ai une méthode qui prend une List<object> est ce que je peux passer une list<String> ?</String></object>

A

Non, avec les génériques ont doit avoir un exact match

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Dans les méthodes de certaines collections, qu’est ce que fait :
- push()
- offer()
- add()
- peek()
- pop()
- poll()

A
  • push() va ajouter l’élément à l’avant de la queue
  • offer() va ajouter un élément à l’arrière de la queue (renvoie false en cas d’erreur)
  • add() va ajouter un élément à l’arrière de la queue (renvoie une exception en cas d’erreur)
  • peek() retourne l’élément à l’arrière de la queue sans le retirer
  • pop() retourne l’élément a l’arrière de la queue et la supprime (renvoie une exception en cas d’erreur)
  • poll() retourne l’élément à l’arrière de la queue et la supprime (renvoie false en cas d’erreur)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quels sont les implémentations de List ?

A
  • ArrayList
  • LinkedList
  • Vector
  • Stack
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Que peut ajouter un TreeSet ?

A

TreeSet peut ajouter des objets qui implemente l’interface Comparable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Peut on mettre l’opérateur diamant vide lors de la déclaration de la classe ?

A

Non, interdit de le laisser vide ou avec ?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Donne moi les méthodes de l’interface Map

A
  • put()
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quelles sont les classes qui héritent de Collection ?

A

List
Set
Queue

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Quelles sont les classes qui font partie du framework “Java Collections” ?

A

List
Set
Queue
Map

17
Q

Donne moi les méthodes communes de Collection

A

add()
remove()
isEmpty()
size()
clear()
contains()

18
Q

Qu’est ce qu’une List ?

A

C’est une collection ordonné (index) d’éléments qui autorise les duplicatas.

19
Q

Qu’est ce qu’un set ?

A

C’est une collection non ordonné qui n’autorise pas les duplicatas.

20
Q

Qu’est ce qu’une Queue ?

A

C’est une collection ordonné d’une certaine façon pour être process. (First-in first-out)

21
Q

Qu’est ce qu’une Map ?

A

Une Map est une collection qui mappe des clés/valeurs sans pouvoir avoir deux clés dupliqués

22
Q

Quand est ce qu’on a besoin d’une List ?

A

Quand on a besoin :
- de stocker des objets dupliqués
- d’insérer et de retrouver des objets avec un index

23
Q

Qu’est ce qu’une ArrayList ?
Quels sont les avantages ?
Quels sont les inconvénients ?
Quand est ce que c’est un bon choix ?

A
  • C’est un tableau resizable.
  • On peut accéder à un élément en un temps constant.
  • L’ajout et la suppression sont plus lent.
  • Quand on lit plus qu’on modifie
24
Q

Qu’est ce qu’une LinkedList ?
Quels sont les avantages ?
Quels sont les inconvénients ?
Quand est ce qu’il faut les utilisés ?

A
  • C’est une collection qui implémente List et Queue
  • On peut accéder, ajouter, supprimer au début ou à la fin de la liste en un temps constant
  • Faire la même chose avec un index prends un temps linéaire
  • Les Linked List sont un bon choix quand elle sont utilisés en tant que Queue
25
Q

Quels sont les deux anciennes implémentation de List ?

A

Vector et Stack

26
Q

Quels sont les méthodes de List ?

A

void add(E élément)
void add(int index, E élément)
E get(int index)
int indexOf(Object o)
int lastIndexOf(Object o)
void remove(int index)
E set(int index, E e)

27
Q

A quel package appartiennent les classes Comparable et Comparator ?

A

Comparable : java.lang
Comparator : java.util

28
Q

Quel est le bénéfice de HashSet ?

A

Ajouter et checker si un élément est dans le set prends un temps constant

29
Q

Quels sont les méthodes que l’interface Set ajoute à Collection ?

A

Aucune (aucune qu’on devrait savoir pour l’examen)

30
Q

Explique moi comment se passe la recherche dans un HashSet ?

A

Java va utiliser le hashcode de l’élément pour retrouver le bucket dans lequel il a été ajouté puis il va utiliser la méthode equals pour trouver l’élément précis à l’intérieur du bucket

31
Q

Quelle classe implemente l’interface NavigableSet ?

A

TreeSet

32
Q

Quelles sont les méthodes que doit implémenté une classe qui implemente l’interface NavigableSet ?

A
  • E lower(E e) : retourne l’élément le plus grand qui est strictement inférieur à l’élément passé en paramètre
  • E floor(E e) : pareil mais inférieur ou egale
  • E ceiling(E e) : retourne l’élément le plus petit qui est supérieur ou égale à l’élément passé en paramètre
  • E higher(E e) : pareil mais strictement supérieur
33
Q

Quelles structure de données n’accepte pas des keys ou des valeurs null ?

A
  • TreeMap (pas de null pour les keys)
  • Hashtable (pas de null pour les keys ou les valeurs)
  • TreeSet (pas de null)
  • ArrayDeque (pas de null car poll utilise null pour dire que la collection est vide)