Pourquoi Set.size() ne correspond-il pas au nombre d'éléments dans l'itérateur de l'ensemble? J'utilise un HashSet et j'ai ajouté quelques valeurs en double. Ces doublons ont été automatiquement éliminés depuis que j'ai utilisé un ensemble. Set.size() renvoie 16. Lorsque je itère réellement sur les éléments, j'en ai 13. 13.Set.size() ne correspond pas au nombre d'éléments dans l'itérateur
Quelle peut être la cause de cette différence? Est-ce que je le fais bien?
Set set = new HashSet();
...
System.out.println ("Found " + set.size() + " tokens...");
Iterator it = set.iterator();
int i = 0;
while (it.hasNext()) {
i++;
System.out.println(Integer.toString(i) + ": " + (String)it.next());
}
est ici la sortie de la console:
Found 16 tokens...
1: 3 Months Free HD Extra Pack
2: Best Buy - $30 for 3 Months (Instant Rebate)
3: Gift Card - Fry's - $100 (HDTV Offer)
4: 6 Months FREE Showtime
5: 3 Months Free HD Access
6: Savings Certificate Booklet
7: 3 months FREE Showtime (rolls off month 4)
8: Free NASCAR Hotpass
9: 3 Months Free DVR Service
10: $0 Delivery & Handling
11: 1 Year Free Showtime
12: $99 Off Advance Equipment (2nd AP)
13: Best Buy - $30 for 12 Months (Instant Rebate)
Veuillez montrer un programme court mais * complet * qui démontre le problème. Je viens d'essayer mais je n'ai pas réussi à le reproduire. –
En d'autres termes, publiez un [SSCCE] (http://sscce.org) afin que nous puissions le copier et le copier sans le moindre changement de code. – BalusC
Est-ce que n'importe quel autre thread a accès au HashSet? –