Javadoc k java.util.Set říká: Note: Great care must be exercised if mutable objects are used as set elements. The behavior of a set is not specified if the value of an object is changed in a manner that affects equals comparisons while the object is an element in the set.
V dokumentaci podle mne nikde není, že pro prvek, který nalezne iterátor, musí contains() true. Stejně tak tam není uvedeno, zda ona metoda equals() se volá na aktuální instanci nebo na instanci, která byla do Setu vložena (přestože ve skutečnosti toto nejsou dvě různé instance). To všechno jsou sice logické předpoklady, ale v dokumentaci je jasně napsáno, že na proměnlivé objekty je třeba si dávat pozor, takže by člověk neměl očekávat, že se to bude chovat logicky. Nicméně zmínka o tom, že HashSet nějak souvisí s hashCode, by jistě v dokumentaci být mohla. Filip Jirsák 2007/5/24, Martin Kuba <[EMAIL PROTECTED]>:
Cili HashSet ten zmutovany list *obsahuje* (contains), protoze ho muzu najit iteratorem, pri porovnani equals() dostanu true a hashCode() vraci to same, cili plni kontrakt. Ale zaroven jeji metoda contains() vraci false, ackoliv jine implementace Set se chovaji korektne. IMHO tedy je javadoc ke contains() u HashSet spatne. 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 --------------------------------------------------------------
-- Filip Jirsák [EMAIL PROTECTED]
