HashMap

Guten Tag

ich versuche gerade HashMap mir wieder selber verständlicher zu machen. Dazu habe ich folgende aufgabenstellung.

a),b) sind meiner meinung nach richtig. nur bei aufgabenstellung c) bin ich mir nicht sicher ob das stimmt was ich dort schreibe. ich würde auch noch gerne wissen warum ich schreiben muss (HashMap<Integer, Artikel>). Wieso reicht für "Integer" kein "int".

Müssen abgeleitete Methoden immer den selben Sichtbarkeitstatus haben wie die Oberklassenmethoden?

Danke schonmal im Vorraus :)

Geldbeträge brauchen nicht gerundet zu werden.
a) Schreiben Sie für eine Kassen-Software eine Klasse Artikel, die als Attribute eine ganzzahlige Artikelnummer, den Nettopreis in Cent und einen beschreibenden String hat.
Fügen Sie einen Konstruktor hinzu, der die Attribute mit als Parameter übergebenen Werten belegt.
Fügen Sie die Methode getPreis hinzu. Diese gibt den Nettopreis in Cent für diesen Artikel zurück, es sei denn die boolean-Konstante Aktionen.MINUS_ZWANZIG hat den Wert true. In diesem Fall wird der um 20% reduzierte Cent-Betrag zurückgegeben. (Die Klasse Aktionen muss nicht definiert werden.)
Fügen Sie eine Methode getMwstBetrag hinzu. Diese gibt den Mehrwertsteuerbetrag für diesen Artikel in Cent zurück. Der gewöhnliche Mehrwertsteuersatz ist 19%.

b) In den folgenden Aufgaben können Sie davon ausgehen, dass für jedes Attribut von Artikel Getter und Setter existieren. Schreiben Sie eine von Artikel abgeleitete Klasse Tiernahrung, die die ererbten Methoden getPreis und getMwstBetrag wie folgt modifiziert: Der Wert von Aktionen.MINUS_ZWANZIG hat keinen Einfluss auf getPreis, der Mehrwertsteuersatz ist hier 7%.

c) Schreiben Sie eine main-Methode, die eine HashMap namens lager anlegt. Diese soll so parametrisiert werden, dass sie den Zugriff auf einen Artikel über dessen Artikelnummer erlaubt. Erzeugen Sie einen „Hundekuchen“ mit Artikelnummer 4711, Nettopreis 200 Cent, und fügen Sie ihn in lager ein. Ermitteln Sie mit Hilfe von lager den Preis des Artikels mit der Artikelnummer 12345 und geben Sie diesen aus.


Java:
package Comparable_üben;

import java.util.HashMap;

public class Artikel {
    int artikelnummer = 0;
    int nettopreis = 0;
    String name="";
    
    Artikel(int artikelnummer, int nettopreis, String name){
        this.artikelnummer = artikelnummer;
        this.nettopreis = nettopreis;
        this.name = name;
    }
    
    public int getPreis(){
        if(Aktionen.MINUS_ZWANIG == true){
            return ( nettopreis *80)/100;
        }
        return nettopreis;
    }
    public int getMwstBetrag(){
        return(nettopreis * 19)/100;
    }
}

class Tiernahrung extends Artikel{

    Tiernahrung(int artikelnummer, int nettopreis, String name) {
        super(artikelnummer, nettopreis, name);
    }

    public int getPreis(){
        return nettopreis;
    }
    
    public int getMwstBetrag(){
        return (nettopreis * 7)/100;
    }
    
    public static void main(String[] args) {
        Artikel a;
        int n;
        HashMap<Integer,Artikel> lager = new HashMap();
        Artikel hundekuchen = new Artikel (4711,200,"Hundekuchen");
        lager.put(4711, hundekuchen);
         a = lager.get(12345);
         n = a.getPreis();
         
    }
}
 

njans

Top Contributor
Ich habe mir nur die main angeguckt:
Das sieht alles korrekt aus, da du eine Map<Integer, Artikel> hast, wie gefordert.
Du legst einen neuen Artikel in die Map mit dem Key 4711 und anschließend holst du dir einen anderen Artikel mit der Artikelnummer 12345 und speicherst seinen Preis. Du vergisst aber die Ausgabe ;)

Java:
public static void main(String[] args) {
        HashMap<Integer,Artikel> lager = new HashMap();
        Artikel hundekuchen = new Artikel (4711,200,"Hundekuchen"); 
        lager.put(4711, hundekuchen);
        int preis = lager.get(12345).getPreis();  // Das kann man so auch kürzer schreiben ;)  
    }
 
Dann noch zu meinen anderen 2 Fragen :)

Wieso reicht bei HashMap<Integer,Artikel> nicht HashMap<int,Artikel>.
Müssen abgeleitete Methoden immer den selben Sichtbarkeitstatus haben wie die Oberklassenmethoden?
 

Kevin94

Top Contributor
Integer musst du Aufgrund der technischen Umsetzung von Generics verwenden(Type Erasure), die nur Klassen als Typparameter erlaubt, primitive Datentypen sind deshalb nicht möglich.

Die Sichtbarkeit einer überschreibenden Methode muss nicht zwangsläufig die selbe sein wie die der Oberklasse, sie darf die Sichtbarkeit dieser erweitern, d.h. wenn die Methode in der Oberklasse z.B. protected-Sichtbarkeit hat, kannst du sie in einer abgeleiteten Klasse auch als public definieren aber nicht als package-private (als private schon gar nicht).
 

Landei

Top Contributor
Hinzuzufügen wäre, dass Arrays auch zu den Objekten gehören, [c]HashMap<String,int[]>[/c] also erlaubt wäre.
 

faetzminator

Gesperrter Benutzer
Integer musst du Aufgrund der technischen Umsetzung von Generics verwenden(Type Erasure), die nur Klassen als Typparameter erlaubt, primitive Datentypen sind deshalb nicht möglich.

Und auch vor Generics war es nicht möglich ;)
@TO: Schau dir z.B. [c]System.out.println()[/c] an. Da gibts wohl ca. 10 Methoden. Eine für [c]Object[/c], dann pro primitivem Datentypen eine. Das gäb ein riesiges Gebastel in der Map ;)
 

Kevin94

Top Contributor
Vor den Generics war es aber offensichtlich, dass primitive Datentypen nicht gehen, weil in den Signaturen eben Object stand. Mit Generics sollte sich am Bytecode der Klassen fast nichts geändert haben, in den JavaDocs steht aber anstatt Object der generische Typparameter, und das das eine Klasse sein muss ist eben nicht mehr offensichtlich.
 

faetzminator

Gesperrter Benutzer
Deine Aussage ist also, dass wenn du einen Parameter Object hast, ist für dich klar, dass keine primitiven Datentypen eingefügt werden kann (inzwischen natürlich schon, mit Autoboxing). Wenn dieser Parameter aber nicht Object, sondern ein anderer beliebiger nicht-primitiver Typ ist, ist dir das nicht klar? Lass ich einfach mal so stehen... :autsch:
 

Kevin94

Top Contributor
Meine Aussage ist, dass es, auf JavaDoc-Ebene betrachtet, nicht offensichtlich ist warum ein generischer Parameter kein primitiver Datentyp sein kann (gibts in anderen Sprachen ja), wenn man sich mit Generics tiefer beschäftigt hat, ist es dann logisch. Bei einer Methode mit Object in der Signatur scheint mir das (ohne Autoboxing) offensichtlich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
krgewb HashMap Java Basics - Anfänger-Themen 2
B Hashmap richtig bauen, die Tripel auf Zahl abbildet? Java Basics - Anfänger-Themen 10
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
S Durch HashMap iterieren Java Basics - Anfänger-Themen 8
rafi072001 Sortieren einer HashMap nach Values Java Basics - Anfänger-Themen 2
F gson mit einer Hashmap Java Basics - Anfänger-Themen 2
J JSON-HashMap Java Basics - Anfänger-Themen 3
J Hashmap Java Basics - Anfänger-Themen 13
C Hashmap zickt Java Basics - Anfänger-Themen 9
S HashMap contains() Methode Java Basics - Anfänger-Themen 1
Z Satz aufteilen und die Wörter zählen (HashMap) Java Basics - Anfänger-Themen 15
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
P Verschachtelte Hashmap Java Basics - Anfänger-Themen 6
I Sortiert eine HashMap nicht gleich wie eine ArrayList? Java Basics - Anfänger-Themen 1
B HashMap alphabetisch sortieren Java Basics - Anfänger-Themen 2
J HashMap Java Basics - Anfänger-Themen 6
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
U Hashmap Iterator selbst implementieren Java Basics - Anfänger-Themen 10
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
K Value eines HashMaps in einer HashMap wiedergeben. Java Basics - Anfänger-Themen 5
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
O HashMap - ArrayList Java Basics - Anfänger-Themen 29
J Hashmap langsamer als compareTo? Java Basics - Anfänger-Themen 23
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
N Methoden HashMap interne Werte miteinander vergleichen Java Basics - Anfänger-Themen 7
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
M Objekt mit Hashmap vergleichen Java Basics - Anfänger-Themen 22
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
J Hashmap auslesen Java Basics - Anfänger-Themen 7
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
shiroX Methoden Morse-Code Übersetzer mit HashMap Java Basics - Anfänger-Themen 5
E HashMap Problem Java Basics - Anfänger-Themen 5
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
T HashMap und die Methoden Java Basics - Anfänger-Themen 13
N Methoden Interaktives PDF mit HashMap befüllen Java Basics - Anfänger-Themen 0
Z Hashmap auseinandernehmen und analysieren Java Basics - Anfänger-Themen 7
B Durchlaufen von Hashmap und Arraylist Java Basics - Anfänger-Themen 8
F HashMap oder welches Array? Java Basics - Anfänger-Themen 4
T HashMap Java Basics - Anfänger-Themen 24
L Hashmap mit variablem Key Java Basics - Anfänger-Themen 9
M Collections Probleme mit Hashmap Java Basics - Anfänger-Themen 4
N Collections String in HashMap umwandeln Java Basics - Anfänger-Themen 3
Z HashMap richtig benutzen Java Basics - Anfänger-Themen 2
lgund HashMap // TS3 Query Java Basics - Anfänger-Themen 7
Z Hashmap Iterator löscht nicht Java Basics - Anfänger-Themen 8
E Hashmap Wert auslesen Java Basics - Anfänger-Themen 2
S Printstream für einen Hashmap Loop Java Basics - Anfänger-Themen 1
dat_vin OOP Hashmap und Attribute Java Basics - Anfänger-Themen 7
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
P Vererbung Eigene HashMap Variante Java Basics - Anfänger-Themen 2
R Hashmap in anderer Klasse nicht benutzbar Java Basics - Anfänger-Themen 1
T Java Hashmap Java Basics - Anfänger-Themen 3
L Gibt es etwas wie "HashMap <String, String, String> Java Basics - Anfänger-Themen 9
K HashMap mit Daten aus ArrayList befüllen Java Basics - Anfänger-Themen 14
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
O HashMap Fragen Java Basics - Anfänger-Themen 8
T HashMap Werte einfügen, durchsuchen und auslesen Java Basics - Anfänger-Themen 17
M Semantisches Problem HashMap/Netzwerk Java Basics - Anfänger-Themen 4
D HashMap Keys durchlaufen Java Basics - Anfänger-Themen 2
B Zugriff auf csv-Datei per hashmap Java Basics - Anfänger-Themen 5
M HashMap keys ausgeben Java Basics - Anfänger-Themen 2
S In einer Hashmap Klassen regestrieren Java Basics - Anfänger-Themen 2
H Collections Was ist schneller - HashMap + Sort v TreeMap? Java Basics - Anfänger-Themen 75
F HashMap nach kleinstem Value durchsuchen Java Basics - Anfänger-Themen 11
G HashMap Java Basics - Anfänger-Themen 6
F Wortpaare - HashMap - ArrayList Java Basics - Anfänger-Themen 6
M HashMap Frage Java Basics - Anfänger-Themen 3
M HashMap - put() reagiert nicht? Java Basics - Anfänger-Themen 8
N Cast eines Objektes in eine Hashmap Java Basics - Anfänger-Themen 13
A CSV Zeilenweise einlesen und in einer HashMap speichern Java Basics - Anfänger-Themen 12
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
F Hilfe bei der HashMap. Java Basics - Anfänger-Themen 3
F HashMap vs. TreeMap Java Basics - Anfänger-Themen 5
C Collections String[] als value in HashMap Java Basics - Anfänger-Themen 6
V Hashmap Iterieren Java Basics - Anfänger-Themen 4
C Csv File in Hashmap ausgeben Java Basics - Anfänger-Themen 14
T HashMap<String,Object> Werte auslesen Java Basics - Anfänger-Themen 5
I HashMap sortieren Java Basics - Anfänger-Themen 10
I HashMap Java Basics - Anfänger-Themen 11
H Collections Brauche modifizierte HashMap Java Basics - Anfänger-Themen 6
H TreeMap/HashMap synchronisieren Java Basics - Anfänger-Themen 2
A Datentypen Hashmap to Array Java Basics - Anfänger-Themen 11
D HashMap überschreibt Werte Java Basics - Anfänger-Themen 7
pg1337 Interface Comparable-Interface bei HashMap Java Basics - Anfänger-Themen 21
D erweiterte hashmap Java Basics - Anfänger-Themen 5
H HashMap<Int, String> - Er findet die Int-Klasse nicht. Java Basics - Anfänger-Themen 3
L HashMap zu JList Java Basics - Anfänger-Themen 6
S Erste Schritte HashMap Kurze Frage - Werte über Schleife ausgeben Java Basics - Anfänger-Themen 30
F Collections ArrayList oder Hashmap mittel Collections.sychronised Java Basics - Anfänger-Themen 6
B Klassen HashMap Zwei Objekte, gleicher Key Java Basics - Anfänger-Themen 4
N HashMap fehlerhafte Rückgabe Java Basics - Anfänger-Themen 7
K Durch eine HashMap wandern? Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben