Re: java.security.Permission

2006-07-27 Tema obsahu Richard Malaschitz
A este si treba pozriet Javadoc k samotnemu objektu java.lang.Object. Tam sa pise o metode hashCode(), ze musi byt implementovana tak aby dva objekty, ktore su equals() musia mat rovnaky hshCode(). 


Re: java.security.Permission

2006-07-27 Tema obsahu Kamzik-II

Dobre, ale potom nechapu proc neni soucasti
rodicovske tridy Permission zakladni implementace
zalozena treba na metode getName (), tak jako je toho
docileno v BasicPermission tride...

Ja se chtel jenom zeptat, jestli v tom neni nejakej
figl, nebo jestli je to jenom nedomyslenost...


- Original Message - 
From: Jiří Mareš [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 7:31 AM
Subject: Re: java.security.Permission




Ja bych teda pouzil javadoc, kde jsem se vysvetleni dobral naprosto v 
pohode ...


The required hashCode behavior for Permission Objects is the following:

   * Whenever it is invoked on the same Permission object more than once 
during an execution of a Java application, the
hashCode method must consistently return the same integer. This integer 
need not remain consistent from one execution of

an application to another execution of the same application.

   * If two Permission objects are equal according to the equals method, 
then calling the hashCode method on each of

the two Permission objects must produce the same integer result.

Nevim proc jsou tyto pozadavky, ale jsou. Standardni implementace hashcode 
vychazi z toho, jak je objekt alokovan, tj.
kde v heapu je a proto ma kazda instance jiny hash, zda ho pozaduji mit 
stejny i napric ruznymi instancemi JVM. Proto si

jej musite implementovat sam ...

Priste se mrknete do javadoc a pak se ptejte  :-)

Kamzik-II napsal(a):


Hm asi mate v tomhle pravdu :)
Jak se vyznate s Permission? Nemohl byste mi
poradit nejakej fine tutorial, kde je popsana tvorba
vlastni implementace? BtW: Diky
- Original Message - From: Lumír Návrat 
[EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Wednesday, July 26, 2006 10:16 PM
Subject: Re: java.security.Permission


No klasicky priklad se uvadi u entitnich objektu, kdy si predstav, ze
mas  vytisk knihy, ten je identifikovan jednak cislem titulu a dale
prirustkovym cislem v ramci daneho titulu.
Pokud by jsi pouzil defaultni implementaci, tak by se to porovnavalo
pouze na rovnost instanci.

To znamena, ze pokud by jsi udelal:

Vytisk v1 = new Vytisk(123455,1/2006);
Vytisk v2 = new Vytisk(123455,2/2006);
v1.equals(v2);   // vysledek je false, jelikoz:   v1 = this, v2 = object
a telo metody equals obsahuje return this == object, coz je porovnavani
adres instacni.

Proto je nutne provest nasledujici reimplementaci:

public boolean equals(Object object) {
   if (object == null) {
  return false;
   }
   if (object instanceof Vytisk) {
   Vytisk pomV = (Vytisk)object)
   return this.id ==  pomV  prirustek.equals(pomV.prirustek);
   }
   return false;
}

Samotna implementace hashcode sice neni zivotne nutna, ale je s ruznych
duvodu, ktere si jiz nepamatuji doporucena.

Lumi(r)

Kamzik-II wrote:

No tak to mi potom neni vubec jasne, proc
bych to mel reimplementovat


- Original Message - From: Lumír Návrat
[EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Wednesday, July 26, 2006 9:14 PM
Subject: Re: java.security.Permission



Nazdar,

strucne co si pamatuji z knizky 57 rad efektivne v JAVe (nebo
obdobne) od Blochua, tak to vychazi ze zakladu jedinecnosti objektu a
zpusobu jeho porovnavani ve virtualnim stroji. Tyto metody se dedi
primo z tridy Object a maji je implementovane vsechny tridy. pravidlo
je takove, ze equals zajistuje shodu na urovni aplikace a hashcode na
urovni VM = v ruznych instancich VM hashcode myslim muze byt ruzny,
zatimco equals je vzdy stejne, ale nejsem si tim ted jisty:(

Plati vsak, pokud se reimplementuje equals, tak se musi
reimplementovat i hashcode

Lumi(r)

Kamzik-II wrote:

Dobry vecer,
prokousavam se bezpecnosti v Jave
a narazil jsem na tridu Permission.
Rad bych si napsal svou vlastni implementaci,
ale trochu me desi nektere metody, oznacene, jako
abstraktni, napriklad mi neni jasne, proc by mel
Permission objekt povinne reimplementovat metodu hashcode a equals,
to equals bych mozna jeste pochopil,
ale hashcode mi prijde jako uplna blbost.
















--
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic






Re: java.security.Permission

2006-07-27 Tema obsahu Lukas Barton




Kamzik-II wrote:

  
  
  
  Ale paklize by tohle vzdy platilo,
pak by byla uplna blbost
  predefinovat metodu equals, protoze
by v ni stacilo porovnavat hascode, kdezto v rodicovske implementaci se
porovnavaji pouze instance

Ta implikace plati pouze jednim smerem!

Dva objekty muzou mit stejny hashCode, ale dle metody equals se
nerovnaji.
Hashcode nemusi byt perfektni ;-)





Re: java.security.Permission

2006-07-27 Tema obsahu Jiří Mareš

Ja bych doporucoval precist si nejake zaklady programovani, kde se dozvite 
takovedle zalezitosti a pak hned navazat
zakladama programovani v jave :-))

Kamzik-II napsal(a):
 Ale paklize by tohle vzdy platilo, pak by byla uplna blbost
 predefinovat metodu equals, protoze by v ni stacilo porovnavat hascode,
 kdezto v rodicovske implementaci se porovnavaji pouze instance.
 
 - Original Message -
 *From:* Richard Malaschitz mailto:[EMAIL PROTECTED]
 *To:* Java mailto:konference@java.cz
 *Sent:* Thursday, July 27, 2006 10:58 AM
 *Subject:* Re: java.security.Permission
 
 A este si treba pozriet Javadoc k samotnemu objektu
 java.lang.Object. Tam sa pise o metode hashCode(), ze musi byt
 implementovana tak aby dva objekty, ktore su equals() musia mat
 rovnaky hshCode().
 
 

-- 
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic


Re: java.security.Permission

2006-07-27 Tema obsahu Martin Kuba

Kamzik-II wrote:


Ale paklize by tohle vzdy platilo, pak by byla uplna blbost
predefinovat metodu equals, protoze by v ni stacilo porovnavat hascode, 
kdezto v rodicovske implementaci se porovnavaji pouze instance.


Mozna byste si o tom mel neco precist, dobry clanek je treba
http://www.javaworld.com/javaworld/jw-01-1999/jw-01-object-p2.html

hashCode() vraci integer, takze moznych ruznych ( z hlediska equals())
objektu muze byt vice, nez je integer hodnot, napriklad
ruznych objektu typu Long. Proto equals() nemuze jenom porovnavat 
hashCode() hodnoty.


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: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Kamzik-II



O boze, equals tady nekdo pekne vysvetlil 
na
vytiscich knih, hascode vicemene taky chapu, 
ale
neni mi jasne na co je mi dobrej ;-)

- Original Message - 

  From: 
  Vit Novak 
  To: 'Java' 
  Sent: Thursday, July 27, 2006 1:07 
  PM
  Subject: equals a hashCode (WAS: 
  java.security.Permission)
  
  
  Zdravim.
  
  Doporucuji precist si 
  knizku od pana Blocha (cesky Java efektivne, anglicky Effective Java). Pan 
  Bloch tuto problematiku rozebira pomerne podrobne a myslim, ze tohle patri k 
  zakladnim znalostem, bez kterych dobry Java kod proste psat nebudete. Jedna se 
  totiz o to, ze predefinovani metody equals nebo hashCode vas zavazuje k 
  dodrzeni urcitych pravidel, bez kterych vam treba Collections budou chodit 
  _velmi_ divne nebo 
  vubec.
  
  Samozrejme je mozne 
  nadefinovat hashCode a equals implementovat jen jako porovnani hashCode, to 
  ovsem casto neni to, co chcete. Vetsinou jdete obracene  nejak si urcite, kdy 
  maji byt dve instance nejake tridy rovne a to naimplementujete. Napriklad 
  budete mozna chtit aby dve ruzne instance tridy mujBigInt, reprezentujici 
  cislo 37, vratily na equals true, ale reprezentace cisla 37 a cisla 
  56498765654987984632159789 by na equals true vratit nemela. Pak Vas ovsem 
  hashCode zavazuje, aby equals instance vracely stejny hashCode, ale nijak Vas 
  nenuti, aby pro dve instance, ktere equals nejsou byly hashCode ruzne. A 
  zrovna u mujBigIntu hashCode tak, aby pro kazda dve nonequals cisla vratil 
  ruzne hashe, proste nevymyslite.
  
  Dalsi vec je, ze kod, 
  kde equals je implementovano jako porovnani hashi, nebude zrovna moc 
  citelny...
  
  Toz tak, hodne 
  stesti
  
  V.
  
  
  
  
  
  From: 
  [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-IISent: 27. července 2006 12:49To: JavaSubject: Re: 
  java.security.Permission
  
  
  Ale paklize by tohle vzdy platilo, 
  pak by byla uplna blbost
  
  predefinovat metodu equals, 
  protoze by v ni stacilo porovnavat hascode, kdezto v rodicovske implementaci 
  se porovnavaji pouze instance.
  

- Original Message - 


From: Richard Malaschitz 


To: Java 


Sent: 
Thursday, July 27, 2006 10:58 AM

Subject: Re: 
java.security.Permission


A este si treba pozriet Javadoc k 
samotnemu objektu java.lang.Object. Tam sa pise o metode hashCode(), ze musi 
byt implementovana tak aby dva objekty, ktore su equals() musia mat rovnaky 
hshCode(). 



Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Kamil Podlesak

Kamzik-II wrote:


O boze, equals tady nekdo pekne vysvetlil na
vytiscich knih, hascode vicemene taky chapu, ale
neni mi jasne na co je mi dobrej ;-)


Hashcode je dobrej v okamziku, kdyz se patricny objekt uklada do 
hashtabulky ci mnoziny. A to s nejvetsi pravdepodobnosti bude.


--
Kamil Podlesak [EMAIL PROTECTED]




Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Pavel Kubal



Porovnavat objekty podle hashCode je hloupost. 
HashCode vubec nemusi byt unikatni. Tzn. muzete mit vice ruznych objektu se 
stejnym hashCodem. Neni zadny problem vracet konstantu jako hashCode, ale je to 
krajne neefektivni reseni.

  - Original Message - 
  From: 
  Kamzik-II 
  
  To: Java 
  Sent: Thursday, July 27, 2006 3:24 
  PM
  Subject: Re: equals a hashCode (WAS: 
  java.security.Permission)
  
  O boze, equals tady nekdo pekne vysvetlil 
  na
  vytiscich knih, hascode vicemene taky chapu, 
  ale
  neni mi jasne na co je mi dobrej ;-)
  
  - Original Message - 
  
From: 
Vit Novak 
To: 'Java' 
Sent: Thursday, July 27, 2006 1:07 
PM
Subject: equals a hashCode (WAS: 
java.security.Permission)


Zdravim.

Doporucuji precist 
si knizku od pana Blocha (cesky Java efektivne, anglicky Effective Java). 
Pan Bloch tuto problematiku rozebira pomerne podrobne a myslim, ze tohle 
patri k zakladnim znalostem, bez kterych dobry Java kod proste psat 
nebudete. Jedna se totiz o to, ze predefinovani metody equals nebo hashCode 
vas zavazuje k dodrzeni urcitych pravidel, bez kterych vam treba Collections 
budou chodit _velmi_ divne 
nebo vubec.

Samozrejme je mozne 
nadefinovat hashCode a equals implementovat jen jako porovnani hashCode, to 
ovsem casto neni to, co chcete. Vetsinou jdete obracene  nejak si urcite, 
kdy maji byt dve instance nejake tridy rovne a to naimplementujete. 
Napriklad budete mozna chtit aby dve ruzne instance tridy mujBigInt, 
reprezentujici cislo 37, vratily na equals true, ale reprezentace cisla 37 a 
cisla 56498765654987984632159789 by na equals true vratit nemela. Pak Vas 
ovsem hashCode zavazuje, aby equals instance vracely stejny hashCode, ale 
nijak Vas nenuti, aby pro dve instance, ktere equals nejsou byly hashCode 
ruzne. A zrovna u mujBigIntu hashCode tak, aby pro kazda dve nonequals cisla 
vratil ruzne hashe, proste nevymyslite.

Dalsi vec je, ze 
kod, kde equals je implementovano jako porovnani hashi, nebude zrovna moc 
citelny...

Toz tak, hodne 
stesti

V.





From: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-IISent: 27. července 2006 
12:49To: JavaSubject: Re: 
java.security.Permission


Ale paklize by tohle vzdy 
platilo, pak by byla uplna blbost

predefinovat metodu equals, 
protoze by v ni stacilo porovnavat hascode, kdezto v rodicovske implementaci 
se porovnavaji pouze instance.

  
  - Original Message - 
  
  
  From: Richard Malaschitz 
  
  
  To: Java 
  
  
  Sent: 
  Thursday, July 27, 2006 10:58 AM
  
  Subject: Re: 
  java.security.Permission
  
  
  A este si 
  treba pozriet Javadoc k samotnemu objektu java.lang.Object. Tam sa pise o 
  metode hashCode(), ze musi byt implementovana tak aby dva objekty, ktore 
  su equals() musia mat rovnaky hshCode(). 
  !DSPAM:44c8be3a124801581612101! 



Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Kamzik-II

Jo jo jasne, ale me spis zajima, proc je
v ramci vm a ne v ramci aplikace, btw: neni to nahodou to same?


- Original Message - 
From: Kamil Podlesak [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 3:25 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



Kamzik-II wrote:


O boze, equals tady nekdo pekne vysvetlil na
vytiscich knih, hascode vicemene taky chapu, ale
neni mi jasne na co je mi dobrej ;-)


Hashcode je dobrej v okamziku, kdyz se patricny objekt uklada do 
hashtabulky ci mnoziny. A to s nejvetsi pravdepodobnosti bude.


--
Kamil Podlesak [EMAIL PROTECTED]







RE: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Moravec Jan



V 
HashMap,Hashtable apod. V nich jsou prvky organizovany dle jejich hashcodu 
(rychlejsi vyhodnoceni (ne)shody pri hledani) a teprve v zaverecne fazy se 
pouzijeequals. V hash tabulkach jsou totiz prvky organizovany dle jejich 
hashcode (kolize se resi prostym retezenim za sebou, nebo do spojoveho 
seznamu).

Tudiz 
pri dotazech typu containsKey, get apod senejprve hleda dle hashcode a 
nasledne se provadi porovnani pres equals.

Honza

  -Original Message-From: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED]On Behalf Of 
  Kamzik-IISent: Thursday, July 27, 2006 3:25 PMTo: 
  JavaSubject: Re: equals a hashCode (WAS: 
  java.security.Permission)
  O boze, equals tady nekdo pekne vysvetlil 
  na
  vytiscich knih, hascode vicemene taky chapu, 
  ale
  neni mi jasne na co je mi dobrej ;-)
  
  - Original Message - 
  
From: 
Vit Novak 
To: 'Java' 
Sent: Thursday, July 27, 2006 1:07 
PM
Subject: equals a hashCode (WAS: 
java.security.Permission)


Zdravim.

Doporucuji precist 
si knizku od pana Blocha (cesky Java efektivne, anglicky Effective Java). 
Pan Bloch tuto problematiku rozebira pomerne podrobne a myslim, ze tohle 
patri k zakladnim znalostem, bez kterych dobry Java kod proste psat 
nebudete. Jedna se totiz o to, ze predefinovani metody equals nebo hashCode 
vas zavazuje k dodrzeni urcitych pravidel, bez kterych vam treba Collections 
budou chodit _velmi_ divne 
nebo vubec.

Samozrejme je mozne 
nadefinovat hashCode a equals implementovat jen jako porovnani hashCode, to 
ovsem casto neni to, co chcete. Vetsinou jdete obracene  nejak si urcite, 
kdy maji byt dve instance nejake tridy rovne a to naimplementujete. 
Napriklad budete mozna chtit aby dve ruzne instance tridy mujBigInt, 
reprezentujici cislo 37, vratily na equals true, ale reprezentace cisla 37 a 
cisla 56498765654987984632159789 by na equals true vratit nemela. Pak Vas 
ovsem hashCode zavazuje, aby equals instance vracely stejny hashCode, ale 
nijak Vas nenuti, aby pro dve instance, ktere equals nejsou byly hashCode 
ruzne. A zrovna u mujBigIntu hashCode tak, aby pro kazda dve nonequals cisla 
vratil ruzne hashe, proste nevymyslite.

Dalsi vec je, ze 
kod, kde equals je implementovano jako porovnani hashi, nebude zrovna moc 
citelny...

Toz tak, hodne 
stesti

V.





From: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-IISent: 27. července 2006 
12:49To: JavaSubject: Re: 
java.security.Permission


Ale paklize by tohle vzdy 
platilo, pak by byla uplna blbost

predefinovat metodu equals, 
protoze by v ni stacilo porovnavat hascode, kdezto v rodicovske implementaci 
se porovnavaji pouze instance.

  
  - Original Message - 
  
  
  From: Richard Malaschitz 
  
  
  To: Java 
  
  
  Sent: 
  Thursday, July 27, 2006 10:58 AM
  
  Subject: Re: 
  java.security.Permission
  
  
  A este si 
  treba pozriet Javadoc k samotnemu objektu java.lang.Object. Tam sa pise o 
  metode hashCode(), ze musi byt implementovana tak aby dva objekty, ktore 
  su equals() musia mat rovnaky hshCode(). 
  


Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Kamzik-II
Koukal sem do toho JavaDocu a neni mi teda jasne, k cemu by se to dalo 
vyuzit... Je tam psano o hashtables, ktere jsem asi taky nepochopil, nebo 
nwim, asi jsem uplne mimo, myslel jsem, ze je to nejake id objektu, ale 
pokud stejne cislo muze vracet vic objektu, tak se to neda pouzit ani na 
to...
- Original Message - 
From: Kamzik-II [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 3:30 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



Jo jo jasne, ale me spis zajima, proc je
v ramci vm a ne v ramci aplikace, btw: neni to nahodou to same?


- Original Message - 
From: Kamil Podlesak [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 3:25 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



Kamzik-II wrote:


O boze, equals tady nekdo pekne vysvetlil na
vytiscich knih, hascode vicemene taky chapu, ale
neni mi jasne na co je mi dobrej ;-)


Hashcode je dobrej v okamziku, kdyz se patricny objekt uklada do 
hashtabulky ci mnoziny. A to s nejvetsi pravdepodobnosti bude.


--
Kamil Podlesak [EMAIL PROTECTED]










Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Kamzik-II



Aha takze ciste jenom kvuli rychlosti?

  - Original Message - 
  From: 
  Moravec 
  Jan 
  To: Java 
  Sent: Thursday, July 27, 2006 3:32 
  PM
  Subject: RE: equals a hashCode (WAS: 
  java.security.Permission)
  
  V 
  HashMap,Hashtable apod. V nich jsou prvky organizovany dle jejich 
  hashcodu (rychlejsi vyhodnoceni (ne)shody pri hledani) a teprve v zaverecne 
  fazy se pouzijeequals. V hash tabulkach jsou totiz prvky organizovany 
  dle jejich hashcode (kolize se resi prostym retezenim za sebou, nebo do 
  spojoveho seznamu).
  
  Tudiz pri dotazech typu containsKey, get apod senejprve hleda dle 
  hashcode a nasledne se provadi porovnani pres equals.
  
  Honza
  
-Original Message-From: [EMAIL PROTECTED] 
[mailto:[EMAIL PROTECTED]On Behalf Of 
Kamzik-IISent: Thursday, July 27, 2006 3:25 PMTo: 
JavaSubject: Re: equals a hashCode (WAS: 
java.security.Permission)
O boze, equals tady nekdo pekne vysvetlil 
na
vytiscich knih, hascode vicemene taky chapu, 
ale
neni mi jasne na co je mi dobrej 
;-)

- Original Message - 

  From: 
  Vit Novak 
  To: 'Java' 
  Sent: Thursday, July 27, 2006 1:07 
  PM
  Subject: equals a hashCode (WAS: 
  java.security.Permission)
  
  
  Zdravim.
  
  Doporucuji 
  precist si knizku od pana Blocha (cesky Java efektivne, anglicky Effective 
  Java). Pan Bloch tuto problematiku rozebira pomerne podrobne a myslim, ze 
  tohle patri k zakladnim znalostem, bez kterych dobry Java kod proste psat 
  nebudete. Jedna se totiz o to, ze predefinovani metody equals nebo 
  hashCode vas zavazuje k dodrzeni urcitych pravidel, bez kterych vam treba 
  Collections budou chodit _velmi_ divne nebo 
  vubec.
  
  Samozrejme je 
  mozne nadefinovat hashCode a equals implementovat jen jako porovnani 
  hashCode, to ovsem casto neni to, co chcete. Vetsinou jdete obracene  
  nejak si urcite, kdy maji byt dve instance nejake tridy rovne a to 
  naimplementujete. Napriklad budete mozna chtit aby dve ruzne instance 
  tridy mujBigInt, reprezentujici cislo 37, vratily na equals true, ale 
  reprezentace cisla 37 a cisla 56498765654987984632159789 by na equals true 
  vratit nemela. Pak Vas ovsem hashCode zavazuje, aby equals instance 
  vracely stejny hashCode, ale nijak Vas nenuti, aby pro dve instance, ktere 
  equals nejsou byly hashCode ruzne. A zrovna u mujBigIntu hashCode tak, aby 
  pro kazda dve nonequals cisla vratil ruzne hashe, proste 
  nevymyslite.
  
  Dalsi vec je, ze 
  kod, kde equals je implementovano jako porovnani hashi, nebude zrovna moc 
  citelny...
  
  Toz tak, hodne 
  stesti
  
  V.
  
  
  
  
  
  From: 
  [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Kamzik-IISent: 27. července 2006 
  12:49To: 
  JavaSubject: Re: 
  java.security.Permission
  
  
  Ale paklize by tohle vzdy 
  platilo, pak by byla uplna blbost
  
  predefinovat metodu equals, 
  protoze by v ni stacilo porovnavat hascode, kdezto v rodicovske 
  implementaci se porovnavaji pouze 
  instance.
  

- Original Message - 


From: Richard Malaschitz 


To: Java 


Sent: 
Thursday, July 27, 2006 10:58 AM

Subject: Re: 
java.security.Permission


A este si 
treba pozriet Javadoc k samotnemu objektu java.lang.Object. Tam sa pise 
o metode hashCode(), ze musi byt implementovana tak aby dva objekty, 
ktore su equals() musia mat rovnaky hshCode(). 



RE: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Moravec Jan



To je 
daleko starsi koncept. Pamatuji se, ze ve skole jsme se o tom ucili v zakladech 
programovani a to bylo min 2 roky pred Javou (uz jsemkmet 
;)
H.

  -Original Message-From: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED]On Behalf Of 
  Kamzik-IISent: Thursday, July 27, 2006 3:41 PMTo: 
  JavaSubject: Re: equals a hashCode (WAS: 
  java.security.Permission)
  Hm dumyslne ;-)
  Ti navrhari javy nebyli uplne "blbi" 
  :)
  
- Original Message - 
From: 
Moravec 
Jan 
To: Java 
Sent: Thursday, July 27, 2006 3:38 
PM
Subject: RE: equals a hashCode (WAS: 
java.security.Permission)

Trefa do cernyho ;) Pres hashcode se "nablizite", pres equals 
dohledate. Princip je ten, ze nedelate equals pres vsechno (u slozitejsich 
objektu muze byt pomale,treba i u Stringu by ten equals nemusel byt 
uplne idealni).

H.
-Original Message-From: 
[EMAIL PROTECTED] 
[mailto:[EMAIL PROTECTED]On Behalf Of 
Kamzik-IISent: Thursday, July 27, 2006 3:37 PMTo: 
JavaSubject: Re: equals a hashCode (WAS: 
java.security.Permission)

  Aha takze ciste jenom kvuli 
  rychlosti?
  
- Original Message - 
From: 
Moravec Jan 
To: Java 
Sent: Thursday, July 27, 2006 3:32 
PM
Subject: RE: equals a hashCode 
(WAS: java.security.Permission)

V HashMap,Hashtable apod. V nich jsou prvky organizovany 
dle jejich hashcodu (rychlejsi vyhodnoceni (ne)shody pri hledani) a 
teprve v zaverecne fazy se pouzijeequals. V hash tabulkach jsou 
totiz prvky organizovany dle jejich hashcode (kolize se resi prostym 
retezenim za sebou, nebo do spojoveho seznamu).

Tudiz pri dotazech typu containsKey, get apod senejprve 
hleda dle hashcode a nasledne se provadi porovnani pres 
equals.

Honza

  -Original Message-From: 
  [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]On 
  Behalf Of Kamzik-IISent: Thursday, July 27, 2006 3:25 
  PMTo: JavaSubject: Re: equals a hashCode (WAS: 
  java.security.Permission)
  O boze, equals tady nekdo pekne vysvetlil 
  na
  vytiscich knih, hascode vicemene taky 
  chapu, ale
  neni mi jasne na co je mi dobrej 
  ;-)
  
  - Original Message - 
  
From: 
Vit Novak 
To: 'Java' 
Sent: Thursday, July 27, 2006 
1:07 PM
Subject: equals a hashCode 
(WAS: java.security.Permission)


Zdravim.

Doporucuji 
precist si knizku od pana Blocha (cesky Java efektivne, anglicky 
Effective Java). Pan Bloch tuto problematiku rozebira pomerne 
podrobne a myslim, ze tohle patri k zakladnim znalostem, bez kterych 
dobry Java kod proste psat nebudete. Jedna se totiz o to, ze 
predefinovani metody equals nebo hashCode vas zavazuje k dodrzeni 
urcitych pravidel, bez kterych vam treba Collections budou chodit 
_velmi_ divne nebo 
vubec.

Samozrejme 
je mozne nadefinovat hashCode a equals implementovat jen jako 
porovnani hashCode, to ovsem casto neni to, co chcete. Vetsinou 
jdete obracene  nejak si urcite, kdy maji byt dve instance nejake 
tridy rovne a to naimplementujete. Napriklad budete mozna chtit aby 
dve ruzne instance tridy mujBigInt, reprezentujici cislo 37, vratily 
na equals true, ale reprezentace cisla 37 a cisla 
56498765654987984632159789 by na equals true vratit nemela. Pak Vas 
ovsem hashCode zavazuje, aby equals instance vracely stejny 
hashCode, ale nijak Vas nenuti, aby pro dve instance, ktere equals 
nejsou byly hashCode ruzne. A zrovna u mujBigIntu hashCode tak, aby 
pro kazda dve nonequals cisla vratil ruzne hashe, proste 
nevymyslite.

Dalsi vec 
je, ze kod, kde equals je implementovano jako porovnani hashi, 
nebude zrovna moc citelny...

Toz tak, 
hodne stesti

V.





From: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
On Behalf Of 
Kamzik-IISent: 27. července 2006 
12:49To: 
JavaSubject: Re: 
java.security.Permission


Ale paklize by tohle 
vzdy platilo, pak by byla uplna 
blbost

predefinovat metodu 
equals, protoze by v ni stacilo porovnav

Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Pavel Kubal
Predstavte si kolekci jako soubor plechovek. Kazda plechovka ma cislo podle
hashCode a obsahuje urcity pocet prvku.

Dejme tomu, ze se hashCode pro kazdy klic v HashMap pocita tak, ze u kazdeho
pismena se zjisti poradi v abecede a pricte se k vyslednemu hashCode.

mame klice : Mary(20), Amy(15), May(15), Dirk(34) - hodnoty nemusite
prepocitavat...nejsou presne, ale pro ilustraci to staci

takze plechovka s cislem 20 bude obsahovat klic Mary, plechovka s cislem
15 klice Amy a May atd.

Vyhledavani v kolekcich funguje tak, ze se pomoci hashCode najde spravna
plechovka a ta se projde pomoci metody equals!

Muzete vracet konstantu jako hashCode, ale to by bylo neefektivni - jedna
plechovka a prilis mnoho volani equals. Takze je vyhodne vracet hodnotu
vypocitanou z atributu klice.

Je dulezite si uvedomit, ze hashCode se musi pocitat tak, aby bylo
KONZISTENTNI. Tzn. nemuzeme ho pocitat pomoci transientnich atributu.
Mohl byste ulozit jiny hashCode, nez pomoci ktereho budete hledat. Tzn.
objekt byste podle daneho hashCode nemohl vubec dohledat. Stejne tak by mohl
fungovat nahodne generovany hashCode.

Takze hashCode neni jen o rychlosti, ale take o fungovani v kolekcich!

Doufam, ze to trochu pomohlo.

- Original Message - 
From: Kamzik-II [EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Thursday, July 27, 2006 3:36 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)


 Koukal sem do toho JavaDocu a neni mi teda jasne, k cemu by se to dalo
 vyuzit... Je tam psano o hashtables, ktere jsem asi taky nepochopil, nebo
 nwim, asi jsem uplne mimo, myslel jsem, ze je to nejake id objektu, ale
 pokud stejne cislo muze vracet vic objektu, tak se to neda pouzit ani na
 to...
 - Original Message - 
 From: Kamzik-II [EMAIL PROTECTED]
 To: Java konference@java.cz
 Sent: Thursday, July 27, 2006 3:30 PM
 Subject: Re: equals a hashCode (WAS: java.security.Permission)


  Jo jo jasne, ale me spis zajima, proc je
  v ramci vm a ne v ramci aplikace, btw: neni to nahodou to same?
 
 
  - Original Message - 
  From: Kamil Podlesak [EMAIL PROTECTED]
  To: Java konference@java.cz
  Sent: Thursday, July 27, 2006 3:25 PM
  Subject: Re: equals a hashCode (WAS: java.security.Permission)
 
 
  Kamzik-II wrote:
 
  O boze, equals tady nekdo pekne vysvetlil na
  vytiscich knih, hascode vicemene taky chapu, ale
  neni mi jasne na co je mi dobrej ;-)
 
  Hashcode je dobrej v okamziku, kdyz se patricny objekt uklada do
  hashtabulky ci mnoziny. A to s nejvetsi pravdepodobnosti bude.
 
  -- 
  Kamil Podlesak [EMAIL PROTECTED]
 
 
 
 



 !DSPAM:44c8c0dd124801367610778!







Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Kamil Podlesak

Kamzik-II wrote:

Koukal sem do toho JavaDocu a neni mi teda jasne, k cemu by se to dalo 
vyuzit... Je tam psano o hashtables, ktere jsem asi taky nepochopil, 
nebo nwim, asi jsem uplne mimo, myslel jsem, ze je to nejake id 
objektu, ale pokud stejne cislo muze vracet vic objektu, tak se to 
neda pouzit ani na to...


Prosim, prosim, na webu jsou tisice a tisice ruznych popisu hashtabulek 
a na jakem principu funguji. Popis teto datove struktury sem nepatri, 
navic KAZDY programator ji musi znat, protoze se jedna o jednu z 
nejpouzivanejsich datovych struktur (obzvlaste v Jave).


--
Kamil Podlesak [EMAIL PROTECTED]




Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Lukas Barton




Moravec Jan wrote:

  
  

  
  To je daleko starsi koncept. Pamatuji se, ze ve
skole jsme se o tom ucili v zakladech programovani a to bylo min 2 roky
pred Javou (uz jsem kmet ;)
  H.

Myslim, ze hashovani vymysleli 50 letech v IBM :-)




Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Kamzik-II



To nic nemeni na tom, ze je to genialni a pritom 
tak jednoduche;-)

  - Original Message - 
  From: 
  Moravec 
  Jan 
  To: Java 
  Sent: Thursday, July 27, 2006 3:43 
  PM
  Subject: RE: equals a hashCode (WAS: 
  java.security.Permission)
  
  To 
  je daleko starsi koncept. Pamatuji se, ze ve skole jsme se o tom ucili v 
  zakladech programovani a to bylo min 2 roky pred Javou (uz jsemkmet 
  ;)
  H.
  
-Original Message-From: [EMAIL PROTECTED] 
[mailto:[EMAIL PROTECTED]On Behalf Of 
Kamzik-IISent: Thursday, July 27, 2006 3:41 PMTo: 
JavaSubject: Re: equals a hashCode (WAS: 
java.security.Permission)
Hm dumyslne ;-)
Ti navrhari javy nebyli uplne "blbi" 
:)

  - Original Message - 
  From: 
  Moravec 
  Jan 
  To: Java 
  Sent: Thursday, July 27, 2006 3:38 
  PM
  Subject: RE: equals a hashCode (WAS: 
  java.security.Permission)
  
  Trefa do cernyho ;) Pres hashcode se "nablizite", pres equals 
  dohledate. Princip je ten, ze nedelate equals pres vsechno (u slozitejsich 
  objektu muze byt pomale,treba i u Stringu by ten equals nemusel byt 
  uplne idealni).
  
  H.
  -Original 
  Message-From: [EMAIL PROTECTED] 
  [mailto:[EMAIL PROTECTED]On Behalf Of 
  Kamzik-IISent: Thursday, July 27, 2006 3:37 
  PMTo: JavaSubject: Re: equals a hashCode (WAS: 
  java.security.Permission)
  
Aha takze ciste jenom kvuli 
rychlosti?

  - Original Message - 
  From: 
  Moravec Jan 
  To: Java 
  Sent: Thursday, July 27, 2006 
  3:32 PM
  Subject: RE: equals a hashCode 
  (WAS: java.security.Permission)
  
  V HashMap,Hashtable apod. V nich jsou prvky organizovany 
  dle jejich hashcodu (rychlejsi vyhodnoceni (ne)shody pri hledani) a 
  teprve v zaverecne fazy se pouzijeequals. V hash tabulkach jsou 
  totiz prvky organizovany dle jejich hashcode (kolize se resi prostym 
  retezenim za sebou, nebo do spojoveho seznamu).
  
  Tudiz pri dotazech typu containsKey, get apod senejprve 
  hleda dle hashcode a nasledne se provadi porovnani pres 
  equals.
  
  Honza
  
-Original Message-From: 
[EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]On 
Behalf Of Kamzik-IISent: Thursday, July 27, 2006 3:25 
PMTo: JavaSubject: Re: equals a hashCode (WAS: 
java.security.Permission)
O boze, equals tady nekdo pekne 
vysvetlil na
vytiscich knih, hascode vicemene taky 
chapu, ale
neni mi jasne na co je mi dobrej 
;-)

- Original Message - 

  From: 
  Vit Novak 

  To: 'Java' 
  Sent: Thursday, July 27, 2006 
  1:07 PM
  Subject: equals a hashCode 
  (WAS: java.security.Permission)
  
  
  Zdravim.
  
  Doporucuji 
  precist si knizku od pana Blocha (cesky Java efektivne, anglicky 
  Effective Java). Pan Bloch tuto problematiku rozebira pomerne 
  podrobne a myslim, ze tohle patri k zakladnim znalostem, bez 
  kterych dobry Java kod proste psat nebudete. Jedna se totiz o to, 
  ze predefinovani metody equals nebo hashCode vas zavazuje k 
  dodrzeni urcitych pravidel, bez kterych vam treba Collections 
  budou chodit _velmi_ divne nebo 
  vubec.
  
  Samozrejme 
  je mozne nadefinovat hashCode a equals implementovat jen jako 
  porovnani hashCode, to ovsem casto neni to, co chcete. Vetsinou 
  jdete obracene  nejak si urcite, kdy maji byt dve instance nejake 
  tridy rovne a to naimplementujete. Napriklad budete mozna chtit 
  aby dve ruzne instance tridy mujBigInt, reprezentujici cislo 37, 
  vratily na equals true, ale reprezentace cisla 37 a cisla 
  56498765654987984632159789 by na equals true vratit nemela. Pak 
  Vas ovsem hashCode zavazuje, aby equals instance vracely stejny 
  hashCode, ale nijak Vas nenuti, aby pro dve instance, ktere equals 
  nejsou byly hashCode ruzne. A zrovna u mujBigIntu hashCode tak, 
  aby pro kazda dve nonequals cisla vratil ruzne hashe, proste 
  nevymyslite.
  
  Dalsi vec 
  je, ze kod, kde equals je implementovano jako porovnani hashi, 
  nebude zrovna moc citelny...
  
  Toz tak, 
  hodne stesti
  

Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Lukas Barton

Kamil Podlesak wrote:

Kamzik-II wrote:

Koukal sem do toho JavaDocu a neni mi teda jasne, k cemu by se to 
dalo vyuzit... Je tam psano o hashtables, ktere jsem asi taky 
nepochopil, nebo nwim, asi jsem uplne mimo, myslel jsem, ze je to 
nejake id objektu, ale pokud stejne cislo muze vracet vic objektu, 
tak se to neda pouzit ani na to...


Prosim, prosim, na webu jsou tisice a tisice ruznych popisu 
hashtabulek a na jakem principu funguji. Popis teto datove struktury 
sem nepatri, navic KAZDY programator ji musi znat, protoze se jedna o 
jednu z nejpouzivanejsich datovych struktur (obzvlaste v Jave).
Jo, kazdy spravny programator by mel mit doma v knihovnicce neco jako 
http://www.mpi-sb.mpg.de/~mehlhorn/DatAlgbooks.html
Stejne tak by mel kazdy programator svuj program dokazat, jak si to 
predstavoval pan Dijkstra ;-)




Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Lumír Návrat
Tady je opet potreba se na to podivat skrz teorii algoritmu. Ale jinak 
jak pisou ostatni na webu je spousta popisu ktere to vysvetli podrobneji 
a lepe.


Hastable, jsou tabulky zalozene na slovniku. tj, na dvojicich (klic, 
jeho vyznam). Pricemz zakladni vyznam, je v rychlejsim nalezeni hodnoty 
k danemu klici.


Kdyz si tedy predstavite nejaky slovnik, treba AN-CZ, v nem mate nejaky 
klic, ten klic muze mit v cestine vice vyznamu. Zde pak zalezi na 
konkretni implementaci hashovaci tabulky.


Jedna z implementaci napriklad funguje tak, ze spocita hashcode klice a 
bude to jeho umisteni v tabulce, pokud ale nastane pripad, ze nejaky 
objekt ma stejny hashcode, a jeho pozice je jiz obsazena, tak nalezne 
prvni volne misto v tabulce za timto objektem a tam jej ulozi. 
Samozrejme, jen tehdy,pokud to tabulka dovoli (muze prohlasit, s 
hashcodem tam muze byt jen jeden stejny objekt a pak ho prepise).


Dalsi implementace je takova, ze na pozici s danou hodnotou hashcode ma 
ulozeny nejakou jinou strukturu (pole, kolekci apod).a ta obsahuje 
vsechny objekty se stejnym hashcode. Pokud potom vyzaduje aplikace 
nalezt  konkretni objekt, tak pak zalezi zda vrati na zaklade hashcode 
vsechny, nebo pak prochazi jinym zpusobem tu strukturu obsahujici dane 
objekty (napr. pomoci metody equals).


Lumi(r)


Kamzik-II wrote:
Koukal sem do toho JavaDocu a neni mi teda jasne, k cemu by se to dalo 
vyuzit... Je tam psano o hashtables, ktere jsem asi taky nepochopil, 
nebo nwim, asi jsem uplne mimo, myslel jsem, ze je to nejake id 
objektu, ale pokud stejne cislo muze vracet vic objektu, tak se to 
neda pouzit ani na to...

- Original Message - From: Kamzik-II [EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Thursday, July 27, 2006 3:30 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



Jo jo jasne, ale me spis zajima, proc je
v ramci vm a ne v ramci aplikace, btw: neni to nahodou to same?


- Original Message - From: Kamil Podlesak [EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Thursday, July 27, 2006 3:25 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



Kamzik-II wrote:


O boze, equals tady nekdo pekne vysvetlil na
vytiscich knih, hascode vicemene taky chapu, ale
neni mi jasne na co je mi dobrej ;-)


Hashcode je dobrej v okamziku, kdyz se patricny objekt uklada do 
hashtabulky ci mnoziny. A to s nejvetsi pravdepodobnosti bude.


--
Kamil Podlesak [EMAIL PROTECTED]













Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Pavel Kubal
Ne;-)

- Original Message - 
From: Kamzik-II [EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:11 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)


 no equals a hashcode uz chapu ;-)
 jeste jedna otazka ohledne kolekci, muze
 kolekce Map mit pro jeden klic vice objektu?


 - Original Message - 
 From: Stanislav Ošmera [EMAIL PROTECTED]
 To: Java konference@java.cz
 Sent: Thursday, July 27, 2006 4:04 PM
 Subject: Re: equals a hashCode (WAS: java.security.Permission)


  Mimo jine se doporucuje aby funkce ktera vraci hashcode byla velmi
  jednoducha a rychla protoze se pouzije jako prvni a nejcasteji (kdyz
  je ruzny hashcode tak se jiz dale nic nezjistuje)
  A az pak funkce equals muze byt velmi slozita na vyhodnoceni.
  Napriklad mam slozity objekt ktery ma spoustu atributu. Hashcode
  vytvorim jen treba pouzitim 3 z nich ktery jsou primitivni typy,
  kdezto pri equals porovnavam vsechny atributy a to u nekterych muze
  znamenat porovnavani jinych objektu s podobnou slozitosti.
 
  Ale opravdu bude lepe si precist nejakou knizku o tehlech hlavnich
  algoritmickych myslenkach ktere jsou v Jave, ten zminovany Bloch je
  treba zrovna na tohle vyborny.
 
  P.S. jinak tomu spojeni equal a hashCode se rika equals contract
  -- 
  Stanislav Ošmera
  Work: +44 (0)2075 980 348
  Cell: +44 (0)7914 635 412
 



 !DSPAM:44c8c935124803984916995!







Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Kamzik-II

V tom pripade teda nechapu, jak muze hashtable mit
vic objektu pro jeden klic, kdyz je to vlastne implementace hashmapy, ktera 
je odvozena od map?


- Original Message - 
From: Pavel Kubal [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:09 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



Ne;-)

- Original Message - 
From: Kamzik-II [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:11 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



no equals a hashcode uz chapu ;-)
jeste jedna otazka ohledne kolekci, muze
kolekce Map mit pro jeden klic vice objektu?


- Original Message - 
From: Stanislav Ošmera [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:04 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)


 Mimo jine se doporucuje aby funkce ktera vraci hashcode byla velmi
 jednoducha a rychla protoze se pouzije jako prvni a nejcasteji (kdyz
 je ruzny hashcode tak se jiz dale nic nezjistuje)
 A az pak funkce equals muze byt velmi slozita na vyhodnoceni.
 Napriklad mam slozity objekt ktery ma spoustu atributu. Hashcode
 vytvorim jen treba pouzitim 3 z nich ktery jsou primitivni typy,
 kdezto pri equals porovnavam vsechny atributy a to u nekterych muze
 znamenat porovnavani jinych objektu s podobnou slozitosti.

 Ale opravdu bude lepe si precist nejakou knizku o tehlech hlavnich
 algoritmickych myslenkach ktere jsou v Jave, ten zminovany Bloch je
 treba zrovna na tohle vyborny.

 P.S. jinak tomu spojeni equal a hashCode se rika equals contract
 -- 
 Stanislav Ošmera

 Work: +44 (0)2075 980 348
 Cell: +44 (0)7914 635 412




!DSPAM:44c8c935124803984916995!












Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Pavel Kubal
API dokumentace pravi :

metoda put() :
Associates the specified value with the specified key in this map (optional
operation). If the map previously contained a mapping for this key, the old
value is replaced by the specified value. (A map m is said to contain a
mapping for a key k if and only if m.containsKey(k) would return true.))

Jak by mohla mit mapa vic objektu pro jeden klic?

Pavel Kubal

- Original Message - 
From: Kamzik-II [EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:15 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)


 V tom pripade teda nechapu, jak muze hashtable mit
 vic objektu pro jeden klic, kdyz je to vlastne implementace hashmapy,
ktera
 je odvozena od map?

 - Original Message - 
 From: Pavel Kubal [EMAIL PROTECTED]
 To: Java konference@java.cz
 Sent: Thursday, July 27, 2006 4:09 PM
 Subject: Re: equals a hashCode (WAS: java.security.Permission)


  Ne;-)
 
  - Original Message - 
  From: Kamzik-II [EMAIL PROTECTED]
  To: Java konference@java.cz
  Sent: Thursday, July 27, 2006 4:11 PM
  Subject: Re: equals a hashCode (WAS: java.security.Permission)
 
 
  no equals a hashcode uz chapu ;-)
  jeste jedna otazka ohledne kolekci, muze
  kolekce Map mit pro jeden klic vice objektu?
 
 
  - Original Message - 
  From: Stanislav Ošmera [EMAIL PROTECTED]
  To: Java konference@java.cz
  Sent: Thursday, July 27, 2006 4:04 PM
  Subject: Re: equals a hashCode (WAS: java.security.Permission)
 
 
   Mimo jine se doporucuje aby funkce ktera vraci hashcode byla velmi
   jednoducha a rychla protoze se pouzije jako prvni a nejcasteji (kdyz
   je ruzny hashcode tak se jiz dale nic nezjistuje)
   A az pak funkce equals muze byt velmi slozita na vyhodnoceni.
   Napriklad mam slozity objekt ktery ma spoustu atributu. Hashcode
   vytvorim jen treba pouzitim 3 z nich ktery jsou primitivni typy,
   kdezto pri equals porovnavam vsechny atributy a to u nekterych muze
   znamenat porovnavani jinych objektu s podobnou slozitosti.
  
   Ale opravdu bude lepe si precist nejakou knizku o tehlech hlavnich
   algoritmickych myslenkach ktere jsou v Jave, ten zminovany Bloch je
   treba zrovna na tohle vyborny.
  
   P.S. jinak tomu spojeni equal a hashCode se rika equals contract
   -- 
   Stanislav Ošmera
   Work: +44 (0)2075 980 348
   Cell: +44 (0)7914 635 412
  
 
 
 
 
 
 
 
 
 
 



 !DSPAM:44c8ca12124801431714180!







Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Kamzik-II

Uz ctu... a stydim se ;-)

- Original Message - 
From: Jiri Fabian [EMAIL PROTECTED]

To: 'Java' konference@java.cz
Sent: Thursday, July 27, 2006 4:30 PM
Subject: RE: equals a hashCode (WAS: java.security.Permission)


To je diskuze o @. Jeden o voze, druhej o koze. Slovnik je pred tebou
skrytej, takze ten zahashovanej vlacek k jednomu policku nevidis, nestaras o
nej - musis jen mit hashcode() i equals().

Kamziku, nespamuj a mazej si cist. Pripominas mi malyho fakana, co taha tatu
za kosili a furt se ho dokolecka pta k cemu je volant.

fil

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf Of Lumír Návrat
Sent: Thursday, July 27, 2006 4:20 PM
To: Java
Subject: Re: equals a hashCode (WAS: java.security.Permission)

Protoze, nejcastejsi reseni je, ze si to managujete sam.

Zde je totiz rozdil, mezi teorii a JAVou, Java totiz nepovoluje mit vice
objektu k jednomu klici, takze se to obchazi tak, ze si k danemu klici
vlozite jako hodnotu nejakou kolekci a v ni si udrzujete objekty patrici
danemu klici. Zda ta dalsi kolekce je hashmap, ci nejaky list, set apod.
je jiz na Vas a na potrebach projektu

Lumi(r)

Kamzik-II wrote:

V tom pripade teda nechapu, jak muze hashtable mit
vic objektu pro jeden klic, kdyz je to vlastne implementace hashmapy,
ktera je odvozena od map?

- Original Message - From: Pavel Kubal [EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:09 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



Ne;-)

- Original Message - From: Kamzik-II [EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:11 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



no equals a hashcode uz chapu ;-)
jeste jedna otazka ohledne kolekci, muze
kolekce Map mit pro jeden klic vice objektu?


- Original Message - From: Stanislav Ošmera
[EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:04 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)


 Mimo jine se doporucuje aby funkce ktera vraci hashcode byla velmi
 jednoducha a rychla protoze se pouzije jako prvni a nejcasteji (kdyz
 je ruzny hashcode tak se jiz dale nic nezjistuje)
 A az pak funkce equals muze byt velmi slozita na vyhodnoceni.
 Napriklad mam slozity objekt ktery ma spoustu atributu. Hashcode
 vytvorim jen treba pouzitim 3 z nich ktery jsou primitivni typy,
 kdezto pri equals porovnavam vsechny atributy a to u nekterych muze
 znamenat porovnavani jinych objektu s podobnou slozitosti.

 Ale opravdu bude lepe si precist nejakou knizku o tehlech hlavnich
 algoritmickych myslenkach ktere jsou v Jave, ten zminovany Bloch je
 treba zrovna na tohle vyborny.

 P.S. jinak tomu spojeni equal a hashCode se rika equals contract
 --  Stanislav Ošmera
 Work: +44 (0)2075 980 348
 Cell: +44 (0)7914 635 412




!DSPAM:44c8c935124803984916995!






















Re: equals a hashCode (WAS: java.security.Permission)

2006-07-27 Tema obsahu Lumír Návrat
Kdyz se podivate do API, tak zjistite, ze Dictionary je obsolete a ma se 
pouzit Map, jenze zaroven to je stale abstraktni trida, ktera Vam 
implementuje to spolecne pro vsechny (key, value) colekce.
Jednim ze zasadnich zvratu ve vyvoji Javy, byl prepracovani Collections 
API mezi verzemi JAVy 1.1.x a 1.2.x a vyssi.


S ohledem na implementaci HashMap, HashTable v JAVe je ten muj priklad, 
se slovnikem opravdu mirne zavadejici, ale podle obecne teorie v tom 
problem neni. Samozjreme si muzete napsat vlastni implementaci HashMapy, 
ktera Vam mnou popsane reseni vice objektu pro klic bude resit sama. 
Mozna jej dokonce jiz naleznete implementovane v baliku Apache 
Collections. (Vim, ze zde minimalne existuje podpora pro hastamap s 
klicem, skladajicim, se ze dvou objektu.


Lumi(r)

Kamzik-II wrote:

a proc se to obchazi a nepouzije se rozhranni Dictionary?
- Original Message - From: Lumír Návrat 
[EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:19 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)


Protoze, nejcastejsi reseni je, ze si to managujete sam.

Zde je totiz rozdil, mezi teorii a JAVou, Java totiz nepovoluje mit vice
objektu k jednomu klici, takze se to obchazi tak, ze si k danemu klici
vlozite jako hodnotu nejakou kolekci a v ni si udrzujete objekty patrici
danemu klici. Zda ta dalsi kolekce je hashmap, ci nejaky list, set apod.
je jiz na Vas a na potrebach projektu

Lumi(r)

Kamzik-II wrote:

V tom pripade teda nechapu, jak muze hashtable mit
vic objektu pro jeden klic, kdyz je to vlastne implementace hashmapy, 
ktera je odvozena od map?


- Original Message - From: Pavel Kubal 
[EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:09 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



Ne;-)

- Original Message - From: Kamzik-II [EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:11 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)



no equals a hashcode uz chapu ;-)
jeste jedna otazka ohledne kolekci, muze
kolekce Map mit pro jeden klic vice objektu?


- Original Message - From: Stanislav Ošmera 
[EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Thursday, July 27, 2006 4:04 PM
Subject: Re: equals a hashCode (WAS: java.security.Permission)


 Mimo jine se doporucuje aby funkce ktera vraci hashcode byla velmi
 jednoducha a rychla protoze se pouzije jako prvni a nejcasteji (kdyz
 je ruzny hashcode tak se jiz dale nic nezjistuje)
 A az pak funkce equals muze byt velmi slozita na vyhodnoceni.
 Napriklad mam slozity objekt ktery ma spoustu atributu. Hashcode
 vytvorim jen treba pouzitim 3 z nich ktery jsou primitivni typy,
 kdezto pri equals porovnavam vsechny atributy a to u nekterych muze
 znamenat porovnavani jinych objektu s podobnou slozitosti.

 Ale opravdu bude lepe si precist nejakou knizku o tehlech hlavnich
 algoritmickych myslenkach ktere jsou v Jave, ten zminovany Bloch je
 treba zrovna na tohle vyborny.

 P.S. jinak tomu spojeni equal a hashCode se rika equals contract
 --  Stanislav Ošmera
 Work: +44 (0)2075 980 348
 Cell: +44 (0)7914 635 412




!DSPAM:44c8c935124803984916995!






















java.security.Permission

2006-07-26 Tema obsahu Kamzik-II



Dobry vecer,
prokousavam se bezpecnosti v Jave
a narazil jsem na tridu Permission.
Rad bych si napsal svou vlastni 
implementaci,
ale trochu me desi nektere metody, oznacene, 
jako
abstraktni, napriklad mi neni jasne, proc by 
mel
Permission objekt povinnereimplementovat metodu hashcode a equals, to equals bych mozna 
jeste pochopil,
ale hashcode mi prijde jako uplna 
blbost.


Re: java.security.Permission

2006-07-26 Tema obsahu Lumír Návrat

Nazdar,

strucne co si pamatuji z knizky 57 rad efektivne v JAVe (nebo obdobne) 
od Blochua, tak to vychazi ze zakladu jedinecnosti objektu a zpusobu 
jeho porovnavani ve virtualnim stroji. Tyto metody se dedi primo z tridy 
Object a maji je implementovane vsechny tridy. pravidlo je takove, ze 
equals zajistuje shodu na urovni aplikace a hashcode na urovni VM = v 
ruznych instancich VM hashcode myslim muze byt ruzny, zatimco equals je 
vzdy stejne, ale nejsem si tim ted jisty:(


Plati vsak, pokud se reimplementuje equals, tak se musi reimplementovat 
i hashcode


Lumi(r)

Kamzik-II wrote:

Dobry vecer,
prokousavam se bezpecnosti v Jave
a narazil jsem na tridu Permission.
Rad bych si napsal svou vlastni implementaci,
ale trochu me desi nektere metody, oznacene, jako
abstraktni, napriklad mi neni jasne, proc by mel
Permission objekt povinne reimplementovat metodu hashcode a equals, to 
equals bych mozna jeste pochopil,

ale hashcode mi prijde jako uplna blbost.




Re: java.security.Permission

2006-07-26 Tema obsahu Kamzik-II

No tak to mi potom neni vubec jasne, proc
bych to mel reimplementovat


- Original Message - 
From: Lumír Návrat [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Wednesday, July 26, 2006 9:14 PM
Subject: Re: java.security.Permission



Nazdar,

strucne co si pamatuji z knizky 57 rad efektivne v JAVe (nebo obdobne) od 
Blochua, tak to vychazi ze zakladu jedinecnosti objektu a zpusobu jeho 
porovnavani ve virtualnim stroji. Tyto metody se dedi primo z tridy Object 
a maji je implementovane vsechny tridy. pravidlo je takove, ze equals 
zajistuje shodu na urovni aplikace a hashcode na urovni VM = v ruznych 
instancich VM hashcode myslim muze byt ruzny, zatimco equals je vzdy 
stejne, ale nejsem si tim ted jisty:(


Plati vsak, pokud se reimplementuje equals, tak se musi reimplementovat i 
hashcode


Lumi(r)

Kamzik-II wrote:

Dobry vecer,
prokousavam se bezpecnosti v Jave
a narazil jsem na tridu Permission.
Rad bych si napsal svou vlastni implementaci,
ale trochu me desi nektere metody, oznacene, jako
abstraktni, napriklad mi neni jasne, proc by mel
Permission objekt povinne reimplementovat metodu hashcode a equals, to 
equals bych mozna jeste pochopil,

ale hashcode mi prijde jako uplna blbost.








Re: java.security.Permission

2006-07-26 Tema obsahu Lumír Návrat
No klasicky priklad se uvadi u entitnich objektu, kdy si predstav, ze 
mas  vytisk knihy, ten je identifikovan jednak cislem titulu a dale 
prirustkovym cislem v ramci daneho titulu.
Pokud by jsi pouzil defaultni implementaci, tak by se to porovnavalo 
pouze na rovnost instanci.


To znamena, ze pokud by jsi udelal:

Vytisk v1 = new Vytisk(123455,1/2006);
Vytisk v2 = new Vytisk(123455,2/2006);
v1.equals(v2);   // vysledek je false, jelikoz:   v1 = this, v2 = object 
a telo metody equals obsahuje return this == object, coz je porovnavani 
adres instacni.


Proto je nutne provest nasledujici reimplementaci:

public boolean equals(Object object) {
   if (object == null) {
  return false;
   }
   if (object instanceof Vytisk) {
   Vytisk pomV = (Vytisk)object)
   return this.id ==  pomV  prirustek.equals(pomV.prirustek);
   }
   return false;
}

Samotna implementace hashcode sice neni zivotne nutna, ale je s ruznych 
duvodu, ktere si jiz nepamatuji doporucena.


Lumi(r)

Kamzik-II wrote:

No tak to mi potom neni vubec jasne, proc
bych to mel reimplementovat


- Original Message - From: Lumír Návrat 
[EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Wednesday, July 26, 2006 9:14 PM
Subject: Re: java.security.Permission



Nazdar,

strucne co si pamatuji z knizky 57 rad efektivne v JAVe (nebo 
obdobne) od Blochua, tak to vychazi ze zakladu jedinecnosti objektu a 
zpusobu jeho porovnavani ve virtualnim stroji. Tyto metody se dedi 
primo z tridy Object a maji je implementovane vsechny tridy. pravidlo 
je takove, ze equals zajistuje shodu na urovni aplikace a hashcode na 
urovni VM = v ruznych instancich VM hashcode myslim muze byt ruzny, 
zatimco equals je vzdy stejne, ale nejsem si tim ted jisty:(


Plati vsak, pokud se reimplementuje equals, tak se musi 
reimplementovat i hashcode


Lumi(r)

Kamzik-II wrote:

Dobry vecer,
prokousavam se bezpecnosti v Jave
a narazil jsem na tridu Permission.
Rad bych si napsal svou vlastni implementaci,
ale trochu me desi nektere metody, oznacene, jako
abstraktni, napriklad mi neni jasne, proc by mel
Permission objekt povinne reimplementovat metodu hashcode a equals, 
to equals bych mozna jeste pochopil,

ale hashcode mi prijde jako uplna blbost.












Re: java.security.Permission

2006-07-26 Tema obsahu Kamzik-II

Hm asi mate v tomhle pravdu :)
Jak se vyznate s Permission? Nemohl byste mi
poradit nejakej fine tutorial, kde je popsana tvorba
vlastni implementace? BtW: Diky
- Original Message - 
From: Lumír Návrat [EMAIL PROTECTED]

To: Java konference@java.cz
Sent: Wednesday, July 26, 2006 10:16 PM
Subject: Re: java.security.Permission


No klasicky priklad se uvadi u entitnich objektu, kdy si predstav, ze
mas  vytisk knihy, ten je identifikovan jednak cislem titulu a dale
prirustkovym cislem v ramci daneho titulu.
Pokud by jsi pouzil defaultni implementaci, tak by se to porovnavalo
pouze na rovnost instanci.

To znamena, ze pokud by jsi udelal:

Vytisk v1 = new Vytisk(123455,1/2006);
Vytisk v2 = new Vytisk(123455,2/2006);
v1.equals(v2);   // vysledek je false, jelikoz:   v1 = this, v2 = object
a telo metody equals obsahuje return this == object, coz je porovnavani
adres instacni.

Proto je nutne provest nasledujici reimplementaci:

public boolean equals(Object object) {
   if (object == null) {
  return false;
   }
   if (object instanceof Vytisk) {
   Vytisk pomV = (Vytisk)object)
   return this.id ==  pomV  prirustek.equals(pomV.prirustek);
   }
   return false;
}

Samotna implementace hashcode sice neni zivotne nutna, ale je s ruznych
duvodu, ktere si jiz nepamatuji doporucena.

Lumi(r)

Kamzik-II wrote:

No tak to mi potom neni vubec jasne, proc
bych to mel reimplementovat


- Original Message - From: Lumír Návrat [EMAIL PROTECTED]
To: Java konference@java.cz
Sent: Wednesday, July 26, 2006 9:14 PM
Subject: Re: java.security.Permission



Nazdar,

strucne co si pamatuji z knizky 57 rad efektivne v JAVe (nebo obdobne) od 
Blochua, tak to vychazi ze zakladu jedinecnosti objektu a zpusobu jeho 
porovnavani ve virtualnim stroji. Tyto metody se dedi primo z tridy 
Object a maji je implementovane vsechny tridy. pravidlo je takove, ze 
equals zajistuje shodu na urovni aplikace a hashcode na urovni VM = v 
ruznych instancich VM hashcode myslim muze byt ruzny, zatimco equals je 
vzdy stejne, ale nejsem si tim ted jisty:(


Plati vsak, pokud se reimplementuje equals, tak se musi reimplementovat i 
hashcode


Lumi(r)

Kamzik-II wrote:

Dobry vecer,
prokousavam se bezpecnosti v Jave
a narazil jsem na tridu Permission.
Rad bych si napsal svou vlastni implementaci,
ale trochu me desi nektere metody, oznacene, jako
abstraktni, napriklad mi neni jasne, proc by mel
Permission objekt povinne reimplementovat metodu hashcode a equals, to 
equals bych mozna jeste pochopil,

ale hashcode mi prijde jako uplna blbost.














Re: java.security.Permission

2006-07-26 Tema obsahu Jiří Mareš

Ja bych teda pouzil javadoc, kde jsem se vysvetleni dobral naprosto v pohode ...

 The required hashCode behavior for Permission Objects is the following:

* Whenever it is invoked on the same Permission object more than once 
during an execution of a Java application, the
hashCode method must consistently return the same integer. This integer need 
not remain consistent from one execution of
an application to another execution of the same application.

* If two Permission objects are equal according to the equals method, then 
calling the hashCode method on each of
the two Permission objects must produce the same integer result.

Nevim proc jsou tyto pozadavky, ale jsou. Standardni implementace hashcode 
vychazi z toho, jak je objekt alokovan, tj.
kde v heapu je a proto ma kazda instance jiny hash, zda ho pozaduji mit stejny 
i napric ruznymi instancemi JVM. Proto si
jej musite implementovat sam ...

Priste se mrknete do javadoc a pak se ptejte  :-)

Kamzik-II napsal(a):
 
 Hm asi mate v tomhle pravdu :)
 Jak se vyznate s Permission? Nemohl byste mi
 poradit nejakej fine tutorial, kde je popsana tvorba
 vlastni implementace? BtW: Diky
 - Original Message - From: Lumír Návrat [EMAIL PROTECTED]
 To: Java konference@java.cz
 Sent: Wednesday, July 26, 2006 10:16 PM
 Subject: Re: java.security.Permission
 
 
 No klasicky priklad se uvadi u entitnich objektu, kdy si predstav, ze
 mas  vytisk knihy, ten je identifikovan jednak cislem titulu a dale
 prirustkovym cislem v ramci daneho titulu.
 Pokud by jsi pouzil defaultni implementaci, tak by se to porovnavalo
 pouze na rovnost instanci.
 
 To znamena, ze pokud by jsi udelal:
 
 Vytisk v1 = new Vytisk(123455,1/2006);
 Vytisk v2 = new Vytisk(123455,2/2006);
 v1.equals(v2);   // vysledek je false, jelikoz:   v1 = this, v2 = object
 a telo metody equals obsahuje return this == object, coz je porovnavani
 adres instacni.
 
 Proto je nutne provest nasledujici reimplementaci:
 
 public boolean equals(Object object) {
if (object == null) {
   return false;
}
if (object instanceof Vytisk) {
Vytisk pomV = (Vytisk)object)
return this.id ==  pomV  prirustek.equals(pomV.prirustek);
}
return false;
 }
 
 Samotna implementace hashcode sice neni zivotne nutna, ale je s ruznych
 duvodu, ktere si jiz nepamatuji doporucena.
 
 Lumi(r)
 
 Kamzik-II wrote:
 No tak to mi potom neni vubec jasne, proc
 bych to mel reimplementovat


 - Original Message - From: Lumír Návrat
 [EMAIL PROTECTED]
 To: Java konference@java.cz
 Sent: Wednesday, July 26, 2006 9:14 PM
 Subject: Re: java.security.Permission


 Nazdar,

 strucne co si pamatuji z knizky 57 rad efektivne v JAVe (nebo
 obdobne) od Blochua, tak to vychazi ze zakladu jedinecnosti objektu a
 zpusobu jeho porovnavani ve virtualnim stroji. Tyto metody se dedi
 primo z tridy Object a maji je implementovane vsechny tridy. pravidlo
 je takove, ze equals zajistuje shodu na urovni aplikace a hashcode na
 urovni VM = v ruznych instancich VM hashcode myslim muze byt ruzny,
 zatimco equals je vzdy stejne, ale nejsem si tim ted jisty:(

 Plati vsak, pokud se reimplementuje equals, tak se musi
 reimplementovat i hashcode

 Lumi(r)

 Kamzik-II wrote:
 Dobry vecer,
 prokousavam se bezpecnosti v Jave
 a narazil jsem na tridu Permission.
 Rad bych si napsal svou vlastni implementaci,
 ale trochu me desi nektere metody, oznacene, jako
 abstraktni, napriklad mi neni jasne, proc by mel
 Permission objekt povinne reimplementovat metodu hashcode a equals,
 to equals bych mozna jeste pochopil,
 ale hashcode mi prijde jako uplna blbost.





 
 
 
 
 
 

-- 
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic