{"id":1675,"date":"2013-01-30T12:02:29","date_gmt":"2013-01-30T10:02:29","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=1675"},"modified":"2013-01-30T12:20:33","modified_gmt":"2013-01-30T10:20:33","slug":"hashwerte-von-wrapper-objekten-mit-neuen-methoden-ab-java-8","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2013\/01\/hashwerte-von-wrapper-objekten-mit-neuen-methoden-ab-java-8\/","title":{"rendered":"Hashwerte von Wrapper-Objekten mit neuen Methoden ab Java 8"},"content":{"rendered":"<p>Der Hashwert eines Objekts bildet den Zustand auf eine kompakte Ganzzahl ab. Haben zwei Objekte ungleiche Hashwerte, so m\u00fcssen auch die Objekte ungleich sein (mindest, wenn die Berechnung korrekt ist). Zur Bestimmung des Hashwertes deklariert jede Klasse \u00fcber die Oberklasse java.lang.Object die Methode int hashCode(). Alle Wrapper-Klassen \u00fcberschreiben diese Methode. Zudem kommen in Java 8 statische Methoden hinzu, sodass sich leicht der Hashwert berechnen l\u00e4sst, ohne extra ein Wrapper-Objekte zu bilden.   <\/p>\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td valign=\"top\" width=\"86\">\n<p>Klasse<\/p>\n<\/td>\n<td valign=\"top\" width=\"294\">\n<p>Klassenmethode<\/p>\n<\/td>\n<td valign=\"top\" width=\"134\">\n<p>Objektmethode<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"86\">\n<p>Boolean<\/p>\n<\/td>\n<td valign=\"top\" width=\"294\">\n<p>static int hashCode(boolean value)<\/p>\n<\/td>\n<td valign=\"top\" width=\"134\">\n<p>int hashCode()<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"86\">\n<p>Byte<\/p>\n<\/td>\n<td valign=\"top\" width=\"294\">\n<p>static int hashCode(byte value)<\/p>\n<\/td>\n<td valign=\"top\" width=\"134\">\n<p>int hashCode()<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"86\">\n<p>Short<\/p>\n<\/td>\n<td valign=\"top\" width=\"294\">\n<p>static int hashCode(short value)<\/p>\n<\/td>\n<td valign=\"top\" width=\"134\">\n<p>int hashCode()<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"86\">\n<p>Integer<\/p>\n<\/td>\n<td valign=\"top\" width=\"294\">\n<p>static int hashCode(int value)<\/p>\n<\/td>\n<td valign=\"top\" width=\"134\">\n<p>int hashCode()<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"86\">\n<p>Long<\/p>\n<\/td>\n<td valign=\"top\" width=\"294\">\n<p>static int hashCode(long value)<\/p>\n<\/td>\n<td valign=\"top\" width=\"134\">\n<p>int hashCode()<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"86\">\n<p>Float<\/p>\n<\/td>\n<td valign=\"top\" width=\"294\">\n<p>static int hashCode(float value)<\/p>\n<\/td>\n<td valign=\"top\" width=\"134\">\n<p>int hashCode()<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"86\">\n<p>Double<\/p>\n<\/td>\n<td valign=\"top\" width=\"294\">\n<p>static int hashCode(double value)<\/p>\n<\/td>\n<td valign=\"top\" width=\"134\">\n<p>int hashCode()<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td valign=\"top\" width=\"86\">\n<p>Character<\/p>\n<\/td>\n<td valign=\"top\" width=\"294\">\n<p>static int hashCode(char value)<\/p>\n<\/td>\n<td valign=\"top\" width=\"134\">\n<p>int hashCode()<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Abbildung 4 Statische Mehtoden hashCode(\u2026) und Objektmethoden im Vergleich<\/p>\n<p>&#160;<\/p>\n<p>Um den Hashwert eines ganzen Objekts zu errechnen, m\u00fcssen folglich alle einzelnen Hashwerte berechnet werden und diese dann zu einer Ganzzahl verkn\u00fcpft werden. Schematisch sieht das so aus:<\/p>\n<p>int h1 = <i>WrapperClass<\/i>.hashCode( value1 );<\/p>\n<p>int h2 = <i>WrapperClass<\/i>.hashCode( value2 );<\/p>\n<p>int h3 = <i>WrapperClass<\/i>.hashCode( value3 );<\/p>\n<p>\u2026<\/p>\n<p>Eclipse nutzt zur Verkn\u00fcpfung der Hashwerte folgendes Muster, welches eine guter Ausgangspunkt ist:<\/p>\n<p>int result = h1;<\/p>\n<p>result = 31 * result + h2;<\/p>\n<p>result = 31 * result + h3;<\/p>\n<p>\u2026<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Hashwert eines Objekts bildet den Zustand auf eine kompakte Ganzzahl ab. Haben zwei Objekte ungleiche Hashwerte, so m\u00fcssen auch die Objekte ungleich sein (mindest, wenn die Berechnung korrekt ist). Zur Bestimmung des Hashwertes deklariert jede Klasse \u00fcber die Oberklasse java.lang.Object die Methode int hashCode(). Alle Wrapper-Klassen \u00fcberschreiben diese Methode. Zudem kommen in Java 8 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[11,66],"tags":[],"class_list":["post-1675","post","type-post","status-publish","format-standard","hentry","category-insel","category-java-8"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1675","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=1675"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1675\/revisions"}],"predecessor-version":[{"id":1676,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/1675\/revisions\/1676"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=1675"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=1675"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=1675"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}