Rudolf PECINOVSKÝ wrote: >> Děkuji za objasnění, už rozumím (naprosto dokonale). >> Jednoznačně je to chyba v javadoc. > > Možná se moje odpověď nebude někomu líbit, ale podle mne v javadoc chyba > není. Toto chování vyplývá z vlastností hešových tabulek a měla by to proto > vysvětlit učebnice (nebo lektor) jako obecnou vlastnost všech objektů > využívajících hešových tabulek. Jestli k vám takováto informace ještě > nepronikla, spílejte svým učitelům a autorům učebnic, z nichž jste se Javu > učili.
Dovolil bych si nesouhlasit. Javadoc tvrdí, že metoda contains() u HashSet používá pouze equals(), což není pravda, a proto je to chyba dokumentace. To, že používá hashovací tabulku, přece neznamená, že contains() nemůže hrubou silou projít všechny položky. Sice by to nebylo moc efektivní, ale neporušovalo by to kontrakt zděděný z Set. Čili javadoc naznačuje, že implementace contains vypadá nějak takto: boolean contains(Object o) { for(Iterator i = this.iterator();i.hasNext();) { Object e = i.next(); if(o==null) { if( e==null) return true; } else { if(o.equals(i.next())) return true; } } return false; } což není pravda. Makub -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Supercomputing Center Brno Martin Kuba Institute of Computer Science email: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 --------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature