Bonjour,

en essayant d'insérer des n-grammes dans une ArrayList<int[]>, je me retrouve avec un doublon deux éléments plus loin. Un extrait du résultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
1476	3384	2804	1.0
1477	79	323	0.03515625
1477	79	990	1.0
1477	79	323	0.9609375
1477	990	1630	0.23828125
1477	990	1080	1.0
1477	990	1630	0.7578125
1477	1700	4244	0.88671875
1477	1700	388	1.0
1477	1700	4244	0.109375
En effectuant des tests sur un quelconque doublon observé, il s'avère qu'il n'est bien inséré qu'une seule fois (le programme ne passe qu'une seule fois dans le bloc d'insertion pour cet élément).

Ci-dessous la partie critique du code :
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
if (found){
	//modify the corresponding value
	double value = ngramcounts.get(ind);
	value += Math.pow(2, -d);
	ngramcounts.set(ind, value);
}
else if (ind == -1){
	//insert the new ngram at the end of the list 
	ngramlist.add(ngram1);
	ngramcounts.add(Math.pow(2, -d));
}
else{
	//insert the new ngram at position ind
	ngramlist.add(ind, ngram1);
	ngramcounts.add(ind, Math.pow(2, -d));
}
Quelqu'un peut-il m'aider ?