Bonjour,
J'ai implementé une version d'un Tas binaire avec des Integer et je souhaite en faire une classe générique.
J'ai donc re-écrit ma classe en Tas<Type_t> au lieu de Tas et j'ai modifié les types en conséquence.
Mais je bloque sur la comparaison des Type_t, l'éditeur me signale une erreur ce qui semble naturel étant donné qu'il ne sait rien du
Type_t et donc il ne sait pas faire de comparaison.
Mais je ne sais pas comment m'en sortir ...
Par exemple pour ma fonction bubbleUp() qui échange les termes du Tas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class Tas<Type_t> { private ArrayList<Type_t> mlist; public Tas() { mlist = new ArrayList<Type_t>(); mlist.add(null); // indices commence a 1 } public void insert(Type_t item) { mlist.add(item); bubbleUp(mlist.size() - 1); } /** * bubbleUp : * Echange la derniere valeur du tableau avec son parent * et remonte jusqu'à restaurer la proprieté du Tas : * Val [i] <= tous ses enfants */ private void bubbleUp(int last) { //System.out.println("bubbleUp "+ last ); //System.out.println("heap :" + this); if(last == 1) return; // tete int parent = last>>1; Type_t parentVal = mlist.get(parent); Type_t lastVal = mlist.get(last); if(lastVal.compareTo(parentVal)) { // ici l'éditeur refuse de compiler mlist.set(parent, lastVal); mlist.set(last, parentVal); } bubbleUp(parent); } ...
Partager