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.
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