Hallo Community,
ich schreibe in 3 Tage einen Test und kann leider nicht ganz nachvollziehen, was hier gemacht wurde ?
1 ) Was ist n genau die Hashmap ? Ist sie wie ein Array anzusehen ?
2) was ich nie verstanden hab warum schreiben wir die public class Sammeln und dann noch einmal public Sammeln?
Was wird da in den "klassen" gespeichert ?
Wieso reicht z.b. nicht einfach nur public class sammeln { CL_Modul .......
und ich muss dann noch public Sammeln, dann mit this zuweisen
Hoffe ich hab mich einigermassen verstädnlich ausgedrückt und ihr konntet mir folgen :lol:
VIELEN DANK !!!
Nein! Eine Map bildet einen Schlüssel auf einen entsprechenden Wert ab. Ähnlich wie ein Telefonbuch, wo du unter dem Namen (Schlüssel) die zugehörige Nummer (Wert) nachschlagen kannst. In deinem Beispiel willst du von einem Integer eine Instanz vom Typ "Sammeln" nachschlagen. Dazu baut man die Map genau so auf, wie du es gepostet hast.
2) was ich nie verstanden hab warum schreiben wir die public class Sammeln und dann noch einmal public Sammeln?
Was wird da in den "klassen" gespeichert ?
"Sammeln" ist eine eigene "nested class" (Also eingebettete Klasse) deiner Haupt-Klasse "CL_CreditCollector". Und wie du es bei jeder Klasse machst, definiert man zuerst den Klassenrumpf mit Sichtbarkeit der Klasse
Code:
public class Sammeln
und dann einen Konstruktor zur Klasse
Code:
public Sammeln
.
Ich kenne zwar den Kontext von deinem Code nicht, aber die Klasse "Sammeln" ist offenstlich eine Hilfsklasse, um ein CL_Modul und die dazugehörigen credits in einem Objekt ablegen zu können und nicht zwei HashMaps pflegen zu müssen (was einen Menge Fehlerpotentzial mit sich bringen würde). Daher ist die Klasse auch nur intern definiert. Warum sie trotzdem "public" und nicht "private" (wie man es für interne Klassen erwarten würde) kann ich dir jetzt aber nicht sagen. :bahnhof:
okay vielen dank
hat mir aufjedenfall ein bisschen weitergeholfen
also wenn ich ne hashmap erstellen will muss ich also "public class CL_CreditCollector "
dann schreibe ich den code hin was alles hineingehört in diese hashmap und am schluss erstelle ich dann das "Objekt" mit "public CL_CreditCollector (){
hash = new HashMap<Integer, Sammeln>();"
Deine Antwort hört sich für mich noch ein wenig wirr an. Darum hier nochmal dein Code, mit Zeilenweiser Erläuterung (vielleicht meinen wir ja dasselbe ):
Java:
publicclassCL_CreditCollector{// Beginn der öffentlichen (public) Klasse "CL_CreditCollector"Map<Integer,Sammeln> hash;// Definition eines Klassen-Attributes "hash" vom Typ "Map<Integer, Sammeln>" (Integer werden auf Sammel-Instanzen abgebildet) für Instanzen der Klasse "CL_CreaditCollector"publicclassSammeln{// Definition der öffentlichen (public) eingebetteten Klasse "Sammeln"CL_Modul modul;// Definition eines Attributes "modul" vom Typ "CL_Modul" für Instanzen der Klasse "Sammeln"int credits;// Definition eines Attributes "credits" vom Typ "int" für Instanzen der Klasse "Sammeln"publicSammeln(CL_Modul modul,int credits){//Öffentlicher Konstruktor zum Erzeugen von Instanzen der Klasse "Sammeln"this.modul = modul;// Der Parameter "modul" wird dem Klassen-Attribut "modul" zugewiesenthis.credits = credits;// Der Parameter "credits" wird dem Klassen-Attribut "credits" zugewiesen}// Ende des Konstruktors der Klasse "Sammeln"}// Ende der Klasse "Sammeln"publicCL_CreditCollector(){// Öffentlicher Konstruktor zum Erzeugen von Instanzen der Klasse "CL_CreditCollector"
hash =newHashMap<Integer,Sammeln>();//Dem Klassen-Attribut "hash" wird eine neue Instanz vom Typ "HashMap" zugeordnet}// Ende des Konstruktors der Klasse "CL_CreditCollector"}//Ende der Klasse "CL_CreditCollector"
Um nur eine Map anzulegen, musst du lediglich die Zeile
Code:
Map<KeyType, ValueType> map = new <Implementierung von Map>
schreiben. Dabei kann sich die Definition
Code:
Map<KeyType,ValueType> map
der Map und die Zuweisung mit einer neuen Instanz [c]map = new <Implementierung von Map>[/code] an verschiedenen Orten im Quellcode befinden (wie du oben sehen kannst).
Eine Map selbst hat nichts mit den Klassen "Sammeln" oder "CL_CreditCollection" zu tun. Kann aber, wie in diesem Beispiel, zusammen damit genutzt werden.