Einführung in die Verwendung von Standardbehältern in Java. [] (java.util.Map java.util.HashMap ), Lektion, Seite 721567
https://www.purl.org/stefan_ram/pub/behaelter-java (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Dynamische Abbildungen in Java

Eine Angabe, durch die sich bestimmten Werten andere Werte zuordnen lassen, wird eine Abbildung  genannt.

Wir sprechen von einer dynamischen  Abbildung, wenn die Abbildung während des Ablaufs eines Programms verändert werden kann.

Für jeden Wert aus einer Definitionsmenge, muß dabei ein Wert aus einem Wertebereich  festgelegt sein. Der Wert aus der Definitionsmenge wird auch Schlüssel  oder Urbild  genannt, der sich dann ergebende Wert des Wertebereichs ist der Bildwert. Ein Schlüssel zusammen mit seinem Bildwert ist ein Wertepaar, und die gesamte Abbildung kann als die Menge aller dieser Wertepaare  gesehen werden.

Ein Abbildungsobjekt ist ein Objekt, das eine solche Abbildung repräsentiert und implementiert. Man kann sich vorstellen, daß es Wertepaare aufnehmen kann und es erlaubt, zu einem Schlüssel den dazugehörigen Bildwert zu erhalten.

Die Schnittstelle "java.util.Map<java.lang.String,java.lang.Integer>"

Die Java -Standardpakete enthalten einige Abbildungsimplementationen  und Abbildungsschnittstellen.

Die Schnittstelle "java.util.Map<java.lang.String,java.lang.Integer>" beschreibt eine Abbildung mit einem Objekt vom Typ "java.lang.String" als Schlüssel und einem Objekt vom Typ "java.lang.Integer" als Bildwert. Die Operation "put" erlaubt es, ein Wertepaar zu der Abbildung zu fügen, und die Operation "get" erlaubt es dann, durch Angabe des Schlüssels den zuvor festgelegten Bildwert zu erhalten.

get und put [Dokumentation]
java.util 
interface Map<java.lang.String,java.lang.Integer> 
java.lang.Integer get( java.lang.Object key ) 
Returns the value to which the specified key  
is mapped, or null if this map contains no  
mapping for the key. 
java.lang.Integer put 
( java.lang.String key, java.lang.Integer value ) 
Associates the specified value with the specified  
key in this map (optional operation).

In den spitzen Klammern wird zuerst der Typ des Schlüssel  und dann der Typ der Bildwerte  angegeben. Ein solcher Behälter kann jedoch nicht mit den Werten der elementaren Typen umgehen. Daher sind zwar Bildwerte vom Typ "Integer" erlaubt, nicht jedoch Bildwerte vom Typ "int".

Würde der Typ "java.lang.Object" in den eckigen Klammern verwendet, so wären damit beliebige Referenzen  („Objekte“) als Schlüssel bzw. als Element erlaubt, da jeder Referenztyp außer dem Nulltyp ein Untertyp dieses Typs ist.

Wie  die geschilderten Operationen der Schnittstelle nun realisiert werden, ist im Rahmen dieser Lektion nicht relevant—jede  Implementation ist hier akzeptabel. Unter den Standardklassen von Java  gibt es schon einige Klassen, welche die beschriebene Schnittstelle implementieren. Eine der möglichen Implementierungen ist die Klasse "java.util.HashMap<String,Integer>". Das folgende Beispielprogramm zeigt, wie damit eine Abbildung erzeugt und verwendet werden kann:

Grade.java
public class Grade

{ public static void main( final java.lang.String[] args )

  { final java.util.Map<java.lang.String,java.lang.Integer> grade =
new java.util.HashMap<java.lang.String,java.lang.Integer>(); grade.put( "sehr gut", 1 );
grade.put( "gut", 2 );
grade.put( "befriedigend", 3 );
grade.put( "ausreichend", 4 );
grade.put( "mangelhaft", 5 );
grade.put( "ungenuegend", 6 ); java.lang.System.out.println( grade.get( "befriedigend" )); java.lang.System.out.println( grade ); }}
System.out
3

{gut=2, ungenuegend=6, befriedigend=3, mangelhaft=5, ausreichend=4, sehr gut=1}

Die Zahl "3" wird mit der Operation "put" unter dem Schlüssel "befriedigend" abgelegt. Anschließend wird das Ergebnis der Operation "get" mit dem Schlüsselwert "befriedigend" ausgegeben. Dies ist natürlich wieder der zuvor abgelegte Wert.

Eine Abbildung kann sich auch als Text darstellen, weil sie die Operation "toString" implementiert. Davon wird mit der zweiten Ausgabeanweisung Gebrauch gemacht: Die Operation "println" kann dank Polymorphie die Operation "toString" verwenden, um eine sinnvolle Ausgabe zu erzeugen, ohne daß die Implementation der Operation "println" sonst irgend etwas von der Klasse "java.util.HashMap<String,Integer>" weiß.

Die zweiten Argumente der Operation "put" sind hier int-Werte und nicht die eigentlich benötigten Objekte der Klasse "Integer". Der Java -Übersetzer erzeugt automatisch Instruktionen, die hier eine „Verpackung“ (“autoboxing ”) durchführen, also aus den int-Werten entsprechende Objekte der Klasse "Integer" erzeugen. Bei Bedarf wird auch wieder eine entsprechende „Entpackung“ durchgeführt.

Dieselbe Abbildung könnte auch durch eine Methode  implementiert werden.

Grade1.java
public class Grade1

{ public static Integer get( final java.lang.String key )

  { return 
"sehr gut" .equals( key )? 1 :
"gut" .equals( key )? 2 :
"befriedigend".equals( key )? 3 :
"ausreichend" .equals( key )? 4 :
"mangelhaft" .equals( key )? 5 :
"ungenuegend" .equals( key )? 6 : null; } public static void main( final java.lang.String[] args ) { java.lang.System.out.println( get( "befriedigend" )); }}
System.out
3

Eine Abbildung kann also durch ein Objekt mit einer Schnittstelle "java.util.Map<TYPE,TYPE1>" oder durch eine Methode implementiert werden (hier stehen der Text "TYPE" und der Text "TYPE1" für die Angabe zweier Referenztypen). Die Implementation durch ein Objekt mit der Schnittstelle "java.util.Map<TYPE,TYPE1>" bietet gegenüber der hier gezeigten Implementation mit einer Methode "get" unter anderem die Möglichkeit an, die Abbildung erst zur Laufzeit  eines Programms festzulegen oder sie während des Programmablaufs zu verändern. Die Abbildung kann auch auf einen Datenträger geschrieben und später wieder eingelesen werden. Außerdem sind die Standardklassen, welche diese Schnittstelle implementieren, oft recht effizient implementiert. (Andererseits ist dies alles durch eine Methode auch möglich, da eine Methode ja wiederum solche Klassen verwenden oder nachahmen könnte.)

Abbildungen werden eher dann durch Methoden  implementiert, wenn die Bildwerte durch ein einheitliches Verfahren  aus den Urbildwerten berechnet werden können, wenn das Verfahren kompakter ist als es die Aufzählung aller Wertepaare wäre. Besonders, falls es viele mögliche Urbildwerte gibt, empfehlen sich dann Methoden. So kann etwa die Anweisung "return 2 * x" in einer Methode zu allen möglichen Zahlen "x" aus einem bestimmten Definitionsbereich das Doppelte als Bildwert festlegen. Es wäre ziemlich ungeschickt, wollte man alle möglichen Wertepaare hier in einem Objekt mit der Schnittstelle "java.util.Map<Integer,Integer>" abspeichern.

Andererseits gibt es kein einfaches Verfahren, um aus dem Namen einer Schulnote ihren üblichen Zahlenwert zu berechnen, und zur Angabe der Namen der Schulnoten gehören nur wenige Wertepaare, so daß hier ein Objekt der Klasse "java.util.Map<String,Integer>" mit Vorteil eingesetzt werden kann.

Frühere Java-Versionen

In Java -Versionen bis 1.4  gab es noch nicht die Möglichkeit der Angabe der Typen in spitzen Klammern und auch noch kein automatisches Ver- und Entpacken von Werten. Falls ein Programmierer heute die historische Schreibweise "java.util.Map" ohne folgende Typangabe in spitzen Klammern verwendet, so erzeugen Java -Übersetzer ab 1.5  in bestimmten Fällen die folgende Warnungsmeldung.

Warnungsmeldung
Note: Test.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Beispiel

Grade.java
public class Grade

{ public static void main( final java.lang.String[] args )

  { final java.util.Map<java.lang.String,java.lang.Integer> grade =
new java.util.HashMap<java.lang.String,java.lang.Integer>(); grade.put( "sehr gut", 1 );
grade.put( "gut", 2 );
grade.put( "befriedigend", 3 );
grade.put( "ausreichend", 4 );
grade.put( "mangelhaft", 5 );
grade.put( "ungenuegend", 6 ); java.lang.System.out.println( grade.get( "befriedigend" )); java.lang.System.out.println( grade ); }}
System.out
3

{gut=2, ungenuegend=6, befriedigend=3, mangelhaft=5, ausreichend=4, sehr gut=1}

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram721567 stefan_ram:721567 java.util.Map java.util.HashMap Einführung, Einfuehrung, Einführungen, Einfuehrungen, eLearning-Modul, e-Learning-Modul, eLearning-Module, e-Learning-Module, Kurs Berlin, Kurse Berlin, Kursus, Vortrag, Vorträge, Vortraege, Lehrgang, Lehrgänge, Lehrgaenge, kostenloses Lehrmaterial, kostenlose Lehrmaterialien, Vorlesung, Vorlesungen, Unterrichtseinheit, Unterrichtseinheiten, kostenloses Unterrichtsmaterial im Internet, kostenlose Unterrichtsmaterialien im Internet, Ausbildung, Ausbildungen, für die Ausbildung, Fortbildung, Fortbildungen, Weiterbildung, Weiterbildungen, Schulung Berlin, Schulungen Berlin, Internetschulung, Webschulung, Kursunterlage, Kursunterlagen, trainer Berlin, Didaktik, Informatikunterricht, Primer, Skript FH, Skripte FH, Skriptum FH, Skripts FH, Script FH, Scripte FH, Scriptum FH, Scripts FH, howto, how-to, how to, Lehrbuch, Buch, Bücher, Buecher, Bericht, Crash Kurs Berlin, Crash-Kurs Berlin, Crashkurs Berlin, Report, Sachtext, Sachtexte, Übung, Übungen, Uebung, Uebungen, course, PbclevtugFgrsnaEnz, lecture note, lecture notes, Tutorial, Tutor, Tutorium, Teacher, Lehrer Berlin, Trainer Berlin, Beratung Berlin, Anleitung zum, Anleitungen zum, Einführung, Einfuehrung, Einführungen, Einfuehrungen, Handbuch für, Handbücher, Handbuecher, Support, Diplomarbeit, Facharbeit, Hausarbeit, Hausarbeiten, Werk, Werke, Text, Übungsblatt, Uebungsblatt, Lösung, Loesung, Lösungen, Loesungen, Auflösung, Aufloesung, Auflösungen, Aufloesungen, Facharbeit, Facharbeiten, Forum, Training, manual, Folie, Folien, Lehrmittel, beratung, Definition von, Allgemeine Erklärung, Allgemeine Erklaerung, Allgemeine Erklärungen, Allgemeine Erklaerung, Allgemeine Erklaerungen, Einfache Erklärung einfach, Einfache Erklaerung einfach, Einfache Erklärungen, Einfache Erklaerung, Einfache Erklaerungen, zum Thema, FAQ, FAQs, Konzept, Lernkurs, Lern-Kurs, Lernkurse, Lern-Kurse, eine kurze Erklärung, Begriff, Begriffe, Erklärung zu Begriffen, begriffbestimmung, begriffbestimmung, Begriffsbestimmung, Begriffserklärung, Begriffserklaerung, Wort, Worterklärung, Worterklaerung, Definition, Beispiel, Beispiele, Bedeutung, Bedeutungen, was bedeutet, Begriffsdefinition, für Anfänger, fuer Anfaenger, für Einsteiger, für Beginner, zum selber Lernen, handout, hand out, web based training, WBT, Net Based Training, NBT, computer based training, CBT, virtual learning environment, virtual university, für die Schule, Seminar, Seminare, Vorgehensweise, Pädagogik, Paedagogik, Akademie, Onlineacademie, Onlineakademie, Wissen, Unterrichtsvorbereitung für das Fach, Unterricht, für Lehrer, für Lehrerinnen, Referat, Referate, Hausaufgabe, Hausaufgaben, Tip, Tipp. Tipps und Tricks, Tips und Tricks, Methode, Methoden, Methodik, Funktion, Funktionsweise, Aufbau, Prinzip, Grundlage, Grundlagen, Internetschulung, Unterlage, Unterlagen, Struktur, Frage, Fragen, Antwort, Antworten, Schulunterricht, zum erlernen, was ist das?, wie?, lerne, Onlineausbildung, Onlinelehrgang, Onlinekurs, Onlinebuch, Webbuch, Academy, Fachhochschule, FH, TFH, Hochschule, Universität, Universitaet, Uni, Schule, Berufsschule, Gymnasium, Erste Schritte mit, Dozent, Dozenten, Zusammenfassung, Übersicht, Term, Fachwort, Fachbegriff, Fachbegriffe, Grundbegriff, Grundbegriffe, Lektion, Lektionen, Bedienungsanleitung, Bedienungsanleitungen, Spezialist, Spezialisten, Coaching, Coach, Fachbuch, technologie, Unterschied zwischen, Unterschiede zwischen, lehren, unterrichten, für das Studium, für Studenten, für Studentinnen, für Studierende, für Schüler, für Schülerinnen, Wie kann ich, Wie kann man, Hilfe, selber, erstellen, Erstellung, Beginner, Online-Seminar, Online-Kurs, Online-Schulung, ich, gebrauchsanweisung, gebrauchsanleitung, Bedienungsanweisung, Einweisung, Kurzinfo, Internet-Kurs, Internet-Kurse, Online-Training, Intensiv, Intensivkurs, Vortragsreihe, Präsentation, Grundzüge, Mitschrift, Mitschriften, Verständnis, verstehen, anwenden, Hintergrundwissen, Hintergrund, Hintergründe, content, Funktionsprinzip, Schritt für Schritt; E-Learning; elearning; online learning; Fernlehre, Fernlehrgang, Fernlehrgänge, Referent, Referenten, Fernkurs, Fernkurse, Fernstudium, Fernschule, Fernuniversität, Fernlehrer, Denken, Qualifizierungsmaßnahme, Qualifizierung, Qualifizierungen, Volkshochschulkurs, Volkshochschulkurse, Internet-Learning-Plattform, Online-Learning-Plattform, E-Learning-Plattform, Internetlearning-Plattform, Onlinelearning-Plattform, Elearning-Plattform, jetzt, Kochbuch, einfach erklärt, Kenntnis, Kenntniss, Kenntnisse, deutsche Hilfe, lernen und verstehen; blended learning; courseware, Profi, Profis, professionell, professionelle, professionelles, profesionell, profesionelle, profesionelles, professionel, gekonnt, für Könner, Grundkurs, Leistungskurs, Aufbaukurs, Lehrtext, Lehrtexte, Fachtext, Fachtexte, Ausarbeitung, distance learning, Online Seminar, distance education, Online Tutorium, Online Tutorien, technology-based learning, Computer based learning, CBL, Internet Based learning, IBL, Web based learning, WBL, online-learning, OL, online-training, OT, CAI, Computer Assisted Instruction, CUU, Computerunterstützter Unterricht, Computer-unterstützter Unterricht, Know how, Grundkenntnis, Grundkenntnisse, Kompetenz, Schulungsunterlagen, Insiderwissen, Rat, Lehrerinnen und Lehrer, ABC, Überblick, Arbeitsblatt, Sekundarstufe, Oberstufe, Material, Materialien, Unterrichtsentwurf, Unterrichtsentwürfe, Lerntip, Lerntips, Lerntipp, Lerntipps, ebook, schnell lernen, Lerner, Lernender, Lernende Erwachsenenbildung, Frage und Antwort, Selbststudium, Selbstudium, Umschulung, , kostenlos, kostenlose, kostenloses, kosten los, kosten lose, kosten loses, gratis, free, frei, freie, freies, privat, private, privates, homepage, home-page, home page, website, web site, webpage, web-page, web page, webpages, web-pages, web pages, webseite, Web-Seite, Webseite, Webseiten, Web-Artikel, Web Artikel, online, on-line, on line, download downloaden, down load, or, deutsch, deutsche, deutsches, deutscher, Deutschland, deutschsprachig, deutschsprachige, deutschsprachiges, german, germany, and, uebersicht, Uerbersicht, uebersichten, Uebersichten, Übersicht, übersicht, Übersichten, übersichten, Uebersicht, uebersicht, Uebersichten, uebersichten, Info, Infos zu, Information über, ueber, Informationen über, Auskunft, Auskünfte, Auskuenfte, Dienst, PbclevtugFgrsnaEnz, Angebot, Angebote, Anbieter, server, für, fuer, in, an, keyword, keywords, key word, keywords, internet, internets, net, network, net work, networks, net works, web, www, world wide web, Theorie, Praxis, Anwendung, DV, IT, glossar, fachwörterbuch it-glossar, computer lexikon, Computerlexikon, Computer-Lexikon, Lexikon, computer lexicon, Computerlexicon, Computer-Lexicon, Lexicon, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 was ist ein, was ist das, was sind, definiere, definition, define, Inhalt, html, xhtml, free im netz, PDF Text, digital, digitale, binär, binäre, elektronisch, elektronische, fachbegriff, fachbegriffe, konzept, Begriff, allgemein, allgemeine, allgemeines, Technik, Datentechnik, Digitaltechnik, Binätechnik, online lesen; , Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd721567, slrprddef721567, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/behaelter-java