{"id":2625,"date":"2014-01-07T06:13:28","date_gmt":"2014-01-07T04:13:28","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/?p=2625"},"modified":"2014-01-07T06:13:28","modified_gmt":"2014-01-07T04:13:28","slug":"string-reprsentation-gleichheitstest-hashwert-und-klon-eines-assoziativspeicher","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2014\/01\/string-reprsentation-gleichheitstest-hashwert-und-klon-eines-assoziativspeicher\/","title":{"rendered":"String-Repr&auml;sentation, Gleichheitstest, Hashwert und Klon eines Assoziativspeicher"},"content":{"rendered":"<p>toString() auf Assoziativspeichern liefert eine Zeichenkette, die den Inhalt der Sammlung aufzeigt. Die Stringrepr\u00e4sentation liefert jeden enthaltenen Schl\u00fcssel, gefolgt von einem Gleichheitszeichen und dem zugeh\u00f6rigen Wert. Entwickler sollten nie diese Zeichenkennung parsen bzw. irgendwelche Annahmen \u00fcber die Formatierung machen. <\/p>\n<p>Beispiel: Ein Assoziativspeicher soll die Zahlen 1, 2, 3 jeweils mit ihrem Quadrat assoziieren. Zum Aufbau benutzen wir eine fortgeschrittene Technik aus Java 8. <\/p>\n<p>Map&lt;Integer, Integer&gt; map = Arrays.asList( 1, 2, 3 ) <\/p>\n<p>.stream() <\/p>\n<p>.collect( Collectors.&lt;Integer, Integer, Integer&gt;toMap( id -&gt; id, id -&gt; id*id) ); <\/p>\n<p>System.out.println( <b>map\/*.toString*\/<\/b> ); \/\/ <b>{1=1, 2=4, 3=9}<\/b> <\/p>\n<p>Aus Object \u00fcberschreiben die Standardimplementierungen die Methoden equals(\u2026) und hashCode(). <\/p>\n<p>Die Klassen HashMap (und Unterklasse LinkedHashMap), IdentityHashMap, TreeMap, ConcurrentSkipListMap und EnumMap deklarieren eine \u00f6ffentliche clone()-Methode, die eine Kopie eines Assoziativspeichers erzeugt. Die Kopie bezieht sich allerdings nur auf den Assoziativspeicher selbst; die Schl\u00fcssel- und Wert-Objekte teilen sich Original und Klon. Diese Form der Kopie nennt sich auch flache Kopie (engl. shallow copy). Eine Ver\u00e4nderung an den enthaltenen Schl\u00fcssel-Werte-Objekten betrifft also immer beide Datenstrukturen, und eine unsachgem\u00e4\u00dfe Modifikation kann zu Unregelm\u00e4\u00dfigkeiten im Original f\u00fchren. Eine ConcurrentHashMap oder WeakHashMap unterst\u00fctzt kein clone(), und eigentlich ist clone() \u00fcberhaupt nicht n\u00f6tig, denn die Konstrukturen der Datenstrukturen k\u00f6nnen immer eine andere Datenstruktur als Vorlage nehmen, etwa clone = new ConcurrentHashMap(existingMap).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>toString() auf Assoziativspeichern liefert eine Zeichenkette, die den Inhalt der Sammlung aufzeigt. Die Stringrepr\u00e4sentation liefert jeden enthaltenen Schl\u00fcssel, gefolgt von einem Gleichheitszeichen und dem zugeh\u00f6rigen Wert. Entwickler sollten nie diese Zeichenkennung parsen bzw. irgendwelche Annahmen \u00fcber die Formatierung machen. Beispiel: Ein Assoziativspeicher soll die Zahlen 1, 2, 3 jeweils mit ihrem Quadrat assoziieren. Zum Aufbau [&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-2625","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\/2625","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=2625"}],"version-history":[{"count":1,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2625\/revisions"}],"predecessor-version":[{"id":2626,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/2625\/revisions\/2626"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=2625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=2625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=2625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}