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
--------------------------------------------------------------

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Odpovedet emailem