Re: hashset contains wtf
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 Scienceemail: [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
Re: Plneni sestav
1.) panovac uloh by mel spis bezet na serveru ne, co kdyz bude napalnovana uloha u zivatel zrovna bude mit vypnuty pocitac. 2.) EJB definuje pro planovani uloh Timer Service, kazdopadne bych asi sahnul po nejakem poradnem reseni jako je jiz zminovany Quartz scheduler. Urcite bych se snazil od toho vseho odprostit klienta a vsechno bych resil na strane serveru. Ales Dostal napsal(a): Zdravim, mam nekolik otazek :) Potrebuji vytvorit aplikaci, ktera bude slouzit k plneni sestav z jinych zdroju (Oracle, textove soubory, atd.) do MySQL. Aplikace by mela byt desktopova (Swing). Server SJSAS 9 s pouzitim EJB3 a vzdaleneho volani na klienta. (toto jiz vyreseno mam). Nyni bych potreboval nasledujici: V desktopove aplikaci mit nejaky planovac uloh, kde naplanuji, kdy se budou dane ulohy pro plneni sestav spoustet (neco jako Crone). Dale potrebuji v desktop aplikaci miti nejaky prehled o tom, ktera sestava se zrovna plni. Nejaky swing listener na sluzbu na serveru, ktera mi bude hlidat, co se zrovna plni. Momentalne nevim, jakym zpusobem postupovat. Vim, ze existuje nejaky Timer pro EJB, ale nevim, jestli je to presne to, co hledam. Na internetu jsem nenasel prilis materialu. Dale nevim jak udelat dany posluchac do Swingu. Existuje EJB Driven Message, ale zase nevim, jestli to slouzi k tomuto ucelu. Pri davkovem plneni nevim, zda muzu pouzit JPA a TopLink. Duvod je ten, ze se bude plnit treba milion radku a nektera data jsou chybova, ktera se ulozi do error tabulky. Pri davkovem zpracovani mi asi budou vadit automaticky rizene transakce. Nechci kvuli jednomu radku rollbacknout celou davku. Mam zakladni znalosti o EJB, ale tohle uz presahuje muj ramec znalosti a navic na internetu jsem k tomuto ucelu moc informaci nenasel :( Diky vsem za nakopnuti. -- S pozdravem Roman "Dagi" Pichlik /* http://www.sweb.cz/pichlik/ Blog pro kodery */
Re: hashset contains wtf
Dovolil bych si nesouhlasit ... protoze pak by metoda contains byla treba v rozporu s metodou remove, protoze contains by vracela true a remove false, protoze objekt se zmenenym hashem z hashset nesmazete ... Jirka Martin Kuba napsal(a): > 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 -- Jiří Mareš (mailto:[EMAIL PROTECTED]) ČSAD SVT Praha, s.r.o. (http://www.svt.cz) Czech Republic
Re: hashset contains wtf
> 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. > > Rozli?ujte javadoc a u?ebnici. Kdyby se m?ly d?vat do javadoc i takov?to > v?ci, tak tam za chv?li n?kdo bude cht?t vysv?tlit, jak funguje interface > nebo jin? jazykov? konstrukt. Pro javadoc by m?lo sta?it prohl??en?, ?e dan? > kontejner je definov?n pomoc? he?ov?ch tabulek, a to tam je. > > T?m nechci ??st, ?e by javadoc n?jakou drobnou zm?nku na toto t?ma nesnesl, > ale ch?pu, pro? se Sun?m nechce do n?j d?vat v?ci, kter? maj? b?t prim?rn? > vysv?tleny jinde. J? bych jim sp?? vy??tal, ?e tuto informaci nedali do > tutori?lu (leda bych ji tam ve sv? slepot? nena?el) - tam podle mne pat??. > J? bych tam za?adil kapitolku o he?ov?ch tabulk?ch, na kterou by se pak > odvol?valy v?echny kapitoly pojedn?vaj?c?ch o kontejnerech, kter? jsou na > he?ov?ch tabulk?ch zalo?eny. ^-- To by bolo vsetko pekene, keby sa javadoc uspokojil so vseobecnym tvrdenim, ze contains() vracia true, ak sa objekt v mnozine nachadza; v tom pripade je na javadoc-u triedy HashSet oznamit ze ako backend pouziva HashMap a ze treba vziat na zretel z toho plynuce konsekvencie (co javadoc triedy HashSet robi), ked hned aj "z toho plynuce konsekvencie" maju byt priemernemu programatorovi zname. Zasadna chyba je, ze javadoc triedy contains() ODHALUJE IMPLEMENTACIU, zial taku, ktoru samotna metoda neimplementuje. Javadoc metody contains() v triede HashSet JE chybny. J.
RE: hashset contains wtf
To neni pravda, Javadoc o implementaci vubec nic nehovori. Pouze zcela presne definuje, co mini pojmem "obsahuje" a jak se prvky porovnavaji s predanym parametrem. Naopak, ona definice s equals je tam zcela nutna - plyne z ni, ze pokud se zmeni vysledek hashCode() a equals(), tak se jiz nejedna o stejny objekt! Jak jiz v diskusi padlo, do mnoziny byl totiz vlastne pridan jiny objekt nez ktery je potom porovnavan pomoci contains(). Co tam chybi je jen upozorneni na vyse zmineny fakt - ze implementace Map/Set si muze identitu cachovat a pokud se objekt "promeni" na jiny, chovani je obecne nepredvidatelne. Kamil Podlesak > -Original Message- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > Behalf Of Jozef Babjak > Sent: Thursday, May 24, 2007 11:34 AM > To: Java > Subject: Re: hashset contains wtf > Zasadna chyba je, ze javadoc triedy contains() ODHALUJE > IMPLEMENTACIU, zial taku, ktoru samotna metoda neimplementuje. > > Javadoc metody contains() v triede HashSet JE chybny. > > J. > >
Re: hashset contains wtf
Tak mi to nedalo a koukl jsem se na javadoc. K JDK 5: Returns true if this set contains the specified element. a k JDK 6: Returns true if this set contains the specified element. More formally, returns true if and only if this set contains an element e such that (o==null ? e==null : o.equals(e)). Rekl bych ze formulace je diky "if and olny if" skutecne zavadejici. Ale jak bych rekl jiz po Xte, zdrojak hovori jasnou reci! Jirka Jozef Babjak napsal(a): >> 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. >> >> Rozli�ujte javadoc a u�ebnici. Kdyby se m�ly d�vat do javadoc i takov�to >> v�ci, tak tam za chv�li n�kdo bude cht�t vysv�tlit, jak funguje interface >> nebo jin� jazykov� konstrukt. Pro javadoc by m�lo sta�it prohl�en�, �e dan� >> kontejner je definov�n pomoc� he�ov�ch tabulek, a to tam je. >> >> T�m nechci ��st, �e by javadoc n�jakou drobnou zm�nku na toto t�ma nesnesl, >> ale ch�pu, pro� se Sun�m nechce do n�j d�vat v�ci, kter� maj� b�t prim�rn� >> vysv�tleny jinde. J� bych jim sp� vy��tal, �e tuto informaci nedali do >> tutori�lu (leda bych ji tam ve sv� slepot� nena�el) - tam podle mne pat��. >> J� bych tam za�adil kapitolku o he�ov�ch tabulk�ch, na kterou by se pak >> odvol�valy v�echny kapitoly pojedn�vaj�c�ch o kontejnerech, kter� jsou na >> he�ov�ch tabulk�ch zalo�eny. > > ^-- To by bolo vsetko pekene, keby sa javadoc uspokojil so > vseobecnym tvrdenim, ze contains() vracia true, ak sa objekt > v mnozine nachadza; v tom pripade je na javadoc-u triedy HashSet > oznamit ze ako backend pouziva HashMap a ze treba vziat na zretel > z toho plynuce konsekvencie (co javadoc triedy HashSet robi), ked > hned aj "z toho plynuce konsekvencie" maju byt priemernemu programatorovi > zname. Zasadna chyba je, ze javadoc triedy contains() ODHALUJE > IMPLEMENTACIU, zial taku, ktoru samotna metoda neimplementuje. > > Javadoc metody contains() v triede HashSet JE chybny. > > J. > -- Jiří Mareš (mailto:[EMAIL PROTECTED]) ČSAD SVT Praha, s.r.o. (http://www.svt.cz) Czech Republic
Plneni sestav
Zkousel jsem ten TimerService. Vypada to, ze to bude v poradku. Na klientovi nastavim, odkdy a jak casto se bude metoda spoustet. I po schozeni klienta dany proces bezi, takze neni vazan na klienta. Slo mi jen o to, aby uzivatel byl schopen dane joby spravovat. Problem mam spise s jinou veci, ve chvili, kdy provedu deploy nove ejb verze na server, vsechny tyto informace ztratim. Napadlo me, ze bych dane naplanovane ulohy ulozil do databaze. Ted ale nevim, jak pri deploy aplikace provest to, aby si sahnul do DB a nastavil dane timeservices podle dat v DB.
Re: Plneni sestav
Nevim jak se to resi u TimerService (a jestli to vubec jde), ale Quartz ma moznost si tyto informace ukladat do db. Viz napriklad http://wiki.opensymphony.com/display/QRTZ1/ConfigJobStoreCMT Cituji Ales Dostal <[EMAIL PROTECTED]>: Zkousel jsem ten TimerService. Vypada to, ze to bude v poradku. Na klientovi nastavim, odkdy a jak casto se bude metoda spoustet. I po schozeni klienta dany proces bezi, takze neni vazan na klienta. Slo mi jen o to, aby uzivatel byl schopen dane joby spravovat. Problem mam spise s jinou veci, ve chvili, kdy provedu deploy nove ejb verze na server, vsechny tyto informace ztratim. Napadlo me, ze bych dane naplanovane ulohy ulozil do databaze. Ted ale nevim, jak pri deploy aplikace provest to, aby si sahnul do DB a nastavil dane timeservices podle dat v DB.
Re: hashset contains wtf
Jiri Mares wrote: > Dovolil bych si nesouhlasit ... protoze pak by metoda contains byla treba v > rozporu s metodou remove, protoze contains > by vracela true a remove false, protoze objekt se zmenenym hashem z hashset > nesmazete ... Nebyla. Javadoc k contains() i remove() se dedi ze Set, a o hashCode() v obojim neni ani zminka. Tedy pokud by se obe chovaly podle javadocu, musely by projit celou kolekci prvku, aby hledany prvek nasly. Problem IMHO spociva v tom, ze HashSet dedi javadoc ze Set, ktera mluvi pouze o equals(). A kdyz si prectete javadoc k Object.equals() a Object.hashCode(), tak se tam rika, ze pokud dva objekty davaji equals() true, tak musi davat i stejny hashCode(), ale zmeny v case se tam neresi. Tento kontrakt equals() a hashCode() vkladane mutovatelne kolekce v kazdem okamziku splnuji. Tedy to, ze HashSet hleda objekty podle hodnoty hashCode() v okamziku vlozeni, a nikoliv prohledanim vsech prvku kolekce, je implementacni detail HashSet, kterym se lisi od Set, a nemela by tedy od ni dedit javadoc. Makub -- ~~ Supercomputing Center Brno Martin Kuba Institute of Computer Scienceemail: [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
Re: hashset contains wtf
Martin Kuba napsal(a): A kdyz si prectete javadoc k Object.equals() a Object.hashCode(), tak se tam rika, ze pokud dva objekty davaji equals() true, tak musi davat i stejny hashCode(), ale zmeny v case se tam neresi. A co teda rika prvni bod tady: http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode() ? Je fakt ze casti: "..., provided no information used in equals comparisons on the object is modified" prakticky nerozumim. Ale rekl bych, ze to pozadavek na chovani v case popisuje. -- S pozdravem, Tomas Zverina Multimedia atelier s.r.o. Na Dolinách 4 147 00 Praha 4 IČO: 25127071 tel.: 241 433 120 e-mail: [EMAIL PROTECTED] http://www.m-atelier.cz/ Společnost Multimedia atelier s.r.o. je zapsána u rejstříkového soudu v Praze, oddíl C, vložka 51961.
Zapisovanie GIFov
Prajem pekny den, ktoru kniznicu pouzivate na zapisovanie obrazkov vo formate GIF v Jave 1.5, cez ImageIO API? Nasiel som viacero kniznic, ale tie dobre vyzerajuce (Gif4J PRO) su komercne. Okrem toho ma zaujalo gif-plugin.dev.java.net, ale cislo verzie 0.1 z roku 2005 nie je velmi povzbudive. Zial prejst na Java6 zatial nemozeme. Ktoru kniznicu pouzivate vy? -Peter Stibrany
Re: hashset contains wtf
Pozor, spor je zrejme nad javadoc k jdk6 ... Tomas Zverina napsal(a): > > Martin Kuba napsal(a): >> A kdyz si prectete javadoc k Object.equals() a Object.hashCode(), >> tak se tam rika, ze pokud dva objekty davaji equals() true, >> tak musi davat i stejny hashCode(), ale zmeny v case se tam neresi. > > A co teda rika prvni bod tady: > > http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html#hashCode() > > ? Je fakt ze casti: > > "..., provided no information used in equals comparisons on the object > is modified" > > prakticky nerozumim. Ale rekl bych, ze to pozadavek na chovani v case > popisuje. > -- Jiří Mareš (mailto:[EMAIL PROTECTED]) ČSAD SVT Praha, s.r.o. (http://www.svt.cz) Czech Republic
Re: hashset contains wtf
> Javadoc k contains() i remove() se dedi ze Set, To neni pravda. Vynatek ze zdrojaku JDK6 k tride HashSet: /** * Returns true if this set contains the specified element. * More formally, returns true if and only if this set * contains an element e such that * (o==null ? e==null : o.equals(e)). * * @param o element whose presence in this set is to be tested * @return true if this set contains the specified element */ public boolean contains(Object o) { return map.containsKey(o); } /** * Removes the specified element from this set if it is present. * More formally, removes an element e such that * (o==null ? e==null : o.equals(e)), * if this set contains such an element. Returns true if * this set contained the element (or equivalently, if this set * changed as a result of the call). (This set will not contain the * element once the call returns.) * * @param o object to be removed from this set, if present * @return true if the set contained the specified element */ public boolean remove(Object o) { return map.remove(o)==PRESENT; } Ja tu nic o dedeni javadocu nevidim. -- Jiří Mareš (mailto:[EMAIL PROTECTED]) ČSAD SVT Praha, s.r.o. (http://www.svt.cz) Czech Republic
Re: Zapisovanie GIFov
|ImageIO.write(img, "GIF", *new *File("obr.gif")); | Peter Stibrany wrote / napísal(a): Prajem pekny den, ktoru kniznicu pouzivate na zapisovanie obrazkov vo formate GIF v Jave 1.5, cez ImageIO API? Nasiel som viacero kniznic, ale tie dobre vyzerajuce (Gif4J PRO) su komercne. Okrem toho ma zaujalo gif-plugin.dev.java.net, ale cislo verzie 0.1 z roku 2005 nie je velmi povzbudive. Zial prejst na Java6 zatial nemozeme. Ktoru kniznicu pouzivate vy? -Peter Stibrany -- Rastislav Rehák EEA communication solutions Hattalova 12, 831 03 Bratislava, Slovakia tel/fax: +421 2 4445 3690 mobile: +421 918 619 891 icq:466031223 http://www.eea.sk
Re: Zapisovanie GIFov
Uz desat rokov tento programik: http://www.gurge.com/amd/old/java/GIFEncoder/src/GIFEncoder.java Dňa 24.5.2007, Peter Stibrany <[EMAIL PROTECTED]> napísal(a): Prajem pekny den, ktoru kniznicu pouzivate na zapisovanie obrazkov vo formate GIF v Jave 1.5, cez ImageIO API? Nasiel som viacero kniznic, ale tie dobre vyzerajuce (Gif4J PRO) su komercne. Okrem toho ma zaujalo gif-plugin.dev.java.net, ale cislo verzie 0.1 z roku 2005 nie je velmi povzbudive. Zial prejst na Java6 zatial nemozeme. Ktoru kniznicu pouzivate vy? -Peter Stibrany
Re: hashset contains wtf
Jiri Mares wrote: >> Javadoc k contains() i remove() se dedi ze Set, > > To neni pravda. Vynatek ze zdrojaku JDK6 k tride HashSet: > Ja tu nic o dedeni javadocu nevidim. Aha, omlouvam se za nepresnost, nedival jsem se do zdrojaku. Nicmene javadoc ke contains() u HashSet jsou *stejne* jako u Set a dokonce u Collection. A podle mne contains u HashSet porusuje kontrakt od Collection. Zkuste si tohle: import java.util.*; import java.util.concurrent.CopyOnWriteArraySet; public class MutovaniHash { public static void main(String[] args) { List list; Set> set; list = new ArrayList(); set = new HashSet>(); test(set, list); list = new ArrayList(); set = new CopyOnWriteArraySet>(); test(set, list); } private static void test(Collection> collection, List list) { collection.add(list); list.add(1); System.out.println("collection = " + collection.getClass().getSimpleName()); System.out.println("collection.contains(list) = " + collection.contains(list)); for(List prvek : collection) { if(prvek.equals(list)) { System.out.println("list je obsazen "); System.out.println("prvek.hashCode() = " + prvek.hashCode()); System.out.println("list.hashCode() = " + list.hashCode()); } } } } Dostanete: collection = HashSet collection.contains(list) = false list je obsazen prvek.hashCode() = 32 list.hashCode() = 32 collection = CopyOnWriteArraySet collection.contains(list) = true list je obsazen prvek.hashCode() = 32 list.hashCode() = 32 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 Scienceemail: [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
Re: Zapisovanie GIFov
Vdaka za odpoved, presne tento postup pouzivam, avsak zapisovanie GIFov je v standardnej Jave az od verzie 1.6. Preto hladam kniznicu, ktora by to rovnakym sposobom zvladla aj v 1.5. -ps On 5/24/07, Rastislav Rehak <[EMAIL PROTECTED]> wrote: ImageIO.write(img, "GIF", new File("obr.gif")); Peter Stibrany wrote / napísal(a): Prajem pekny den, ktoru kniznicu pouzivate na zapisovanie obrazkov vo formate GIF v Jave 1.5, cez ImageIO API? Nasiel som viacero kniznic, ale tie dobre vyzerajuce (Gif4J PRO) su komercne. Okrem toho ma zaujalo gif-plugin.dev.java.net, ale cislo verzie 0.1 z roku 2005 nie je velmi povzbudive. Zial prejst na Java6 zatial nemozeme. Ktoru kniznicu pouzivate vy? -Peter Stibrany -- Rastislav Rehák EEA communication solutions Hattalova 12, 831 03 Bratislava, Slovakia tel/fax: +421 2 4445 3690 mobile: +421 918 619 891 icq:466031223 http://www.eea.sk
Re: Zapisovanie GIFov
Vdaka za tip. Skoda, ze nepodporuje ImageIO interfejs, takto to bude chciet viac uprav. -ps On 5/24/07, Richard Malaschitz <[EMAIL PROTECTED]> wrote: Uz desat rokov tento programik: http://www.gurge.com/amd/old/java/GIFEncoder/src/GIFEncoder.java Dňa 24.5.2007, Peter Stibrany <[EMAIL PROTECTED]> napísal(a): > Prajem pekny den, > > ktoru kniznicu pouzivate na zapisovanie obrazkov vo formate GIF v Jave > 1.5, cez ImageIO API? > > Nasiel som viacero kniznic, ale tie dobre vyzerajuce (Gif4J PRO) su komercne. > Okrem toho ma zaujalo gif-plugin.dev.java.net, ale cislo verzie 0.1 z > roku 2005 nie je velmi povzbudive. > Zial prejst na Java6 zatial nemozeme. > > Ktoru kniznicu pouzivate vy? > > -Peter Stibrany >
Re: Plneni sestav
timer service objekt je persistentni, to znamena, ze jeho nschedulovani prezije restart. Ales Dostal napsal(a): Zkousel jsem ten TimerService. Vypada to, ze to bude v poradku. Na klientovi nastavim, odkdy a jak casto se bude metoda spoustet. I po schozeni klienta dany proces bezi, takze neni vazan na klienta. Slo mi jen o to, aby uzivatel byl schopen dane joby spravovat. Problem mam spise s jinou veci, ve chvili, kdy provedu deploy nove ejb verze na server, vsechny tyto informace ztratim. Napadlo me, ze bych dane naplanovane ulohy ulozil do databaze. Ted ale nevim, jak pri deploy aplikace provest to, aby si sahnul do DB a nastavil dane timeservices podle dat v DB. -- S pozdravem Roman "Dagi" Pichlik /* http://www.sweb.cz/pichlik/ Blog pro kodery */
RE: hashset contains wtf
Opomenuti obecnych pravidel hashCode musi odpovidat chovani equals tj. A.equals(B)== true pak A.hashCode()==B.hashCode() a zaroven A.equals(B) == false pak A.hashCode()!=B.hashCode() a vysledek hashCode() se pro stejny objekt se nemeni od spusteni JVM. Nekde v archivu konference je odkaz na Bloch Effective programming in Java (nebo jak se to jmenuje), kde se Bloch venuje efektivni metode pro hash a equals. karel On ??t, 2007-05-24 at 11:47 +0200, Podlesak Kamil wrote: > hashCode() a equals()
RE: hashset contains wtf
On Thu, 24 May 2007 17:10:03 +0200, Karel Tejnora wrote > Opomenuti obecnych pravidel > > hashCode musi odpovidat chovani equals tj. A.equals(B)== true pak > A.hashCode()==B.hashCode() a zaroven A.equals(B) == false pak > A.hashCode()!=B.hashCode() Ta druha podminka prae platit nemusi. A.equals(B)==false neznamena, ze maji ruzne hashovani. Tj. muzou existovat kolize :-) Doporucuji precist nejakou teorii k hashovani :-) Lukas
Re: hashset contains wtf
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 Scienceemail: [EMAIL PROTECTED] Masaryk University http://www.ics.muni.cz/~makub/ Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775 -- -- Filip Jirsák [EMAIL PROTECTED]