Uit een (automatisch gesorteerd) lijstje vluchten wil ik soms weten wat de volgende vlucht is, gegeven een vlucht uit de lijst:
Maar wat gebeurd er nu:
Hoe is dit nu mogelijk? Het betreffende element zit wél in de TreeSet flightList (this), maar niet in de ArrayList list die is opgebouwd uit de elementen van flightList? Als ik de inhoud van beide lijstjes naar de console print zie ik geen verschil, ik zie ook in beide lijstjes het gevraagde element. Toch geeft de eerste contains() true en de tweede false. Is dit een bug in mijn Java (j2re1.4.2_04) of doe ik zelf iets verkeerd?
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| Public class FlightList extends TreeSet { public Flight next(Flight last) { if (!this.contains(last)) { System.out.println("Treeset does not contain " + last); } if (this.last().equals(last)) { return null; } ArrayList list = new ArrayList(this); if (!list.contains(last)) { System.out.println("Arraylist does not contain " + last); } return (Flight) list.get(list.indexOf(last) + 1); } } |
Maar wat gebeurd er nu:
code:
1
2
| console: Arraylist does not contain [(..aFlight..)] |
Hoe is dit nu mogelijk? Het betreffende element zit wél in de TreeSet flightList (this), maar niet in de ArrayList list die is opgebouwd uit de elementen van flightList? Als ik de inhoud van beide lijstjes naar de console print zie ik geen verschil, ik zie ook in beide lijstjes het gevraagde element. Toch geeft de eerste contains() true en de tweede false. Is dit een bug in mijn Java (j2re1.4.2_04) of doe ik zelf iets verkeerd?
Great minds think alike!