Verschachtelte Hashmap

Diskutiere Verschachtelte Hashmap im Java Basics - Anfänger-Themen Bereich.
P

Panda9296

1594469049514.png

Hi Leute und zwar möchte ich diese verschachtelte Hashmap konfigurieren. Der Grund für die Hashmap ist der, dass der Schlüssel immer ein Produkttyp sein soll, der eine Arrayliste mit den geaddeten Zutaten aufruft. Ich habe die Klasse vorher mit einer Arrayliste geschrieben und bin folgender maßen voran gekommen:

Code:
package de.miguel.frozzenlist.frozzenbetaa;

import java.util.ArrayList;
import java.util.HashMap;

public class Tray {

    private int trayID;
    public HashMap<String,ArrayList<Product>>producttype= new HashMap<>();

    //private ArrayList<Product> productList= new ArrayList<Product>();

    public Tray(int trayID, int userID,HashMap<String,ArrayList<Product>>producttype) {
        this.trayID = trayID;
        this.producttype=producttype;
    }
    public void showTray() {
        toStringForListInformation();
    }
    public void addProduct(ArrayList<Product>productList, Product product){

        productList.add(product);
    }
    public void removeProduct(int input,ArrayList<Product>productlist) {
        toStringForListInformation();
        toStringQuestionWhichIndexRemove();
        productlist.remove(input);
    }
    public int getTrayID() {
        return trayID;
    }
    public void setTrayID(int trayID) {
        this.trayID = trayID;
    }
    public ArrayList<Product> getProductList() {
        return productList;
    }
    public void addProduct(String name,String typ,int productID) {
        Product product =new Product();
        product.setName(name);
        product.setTyp(typ);
        product.setProductID(productID);
        productList.add(product);
    }
    public void removeProduct(int input) {
        for(int i=0;i<productList.size();i++) {
            while(input==i) {
                productList.remove(i);
            }toStringMessageOutOfBons();
        }
    }
    public void changeProduct(int input,String name,String typ,int productID) {
        for(int i=0;i<productList.size();i++) {
            while(input==i) {
                productList.get(i);
                Product product =new Product();
                product.setName(name);
                product.setTyp(typ);
                product.setProductID(productID);
                productList.add(i, product);


            }toStringMessageOutOfBons();
        }
    }

    @Override
    public String toString() {
        return "Tray [trayID=" + trayID + ", productList=" + productList + "]";
    }
    @SuppressWarnings("unused")
    public String toStringForListInformation() {

        for(int i=0;i<productList.size();i++) {

            return "Listung des Faches: "+trayID+"\n "+productList.get(i);
        }
        return "Keine Liste vorhanden";
    }
    public static String toStringQuestionWhichIndexRemove() {
        return "Welchen Index wollen Sie löschen?";
    }
    public static String toStringMessageOutOfBons() {
        return "Falsche Eingabe. Deine Eingabe ist außerhalb der Indexreichweite!\nVersuche es nochmal";
    }
}
Meine Frage ist jetzt, wie ich das jetzt mit der Hashmap machen kann. Ich denke nicht das es wichtig ist, möchte es denoch erwähnen, dass dies eine Android App wird.
 
T

temi

Ich verstehe deine Frage nicht. Kannst du dein Problem genauer schildern?

Du hast doch eine Map<> in deinem Code?

Schau dir ggf. die Dokumentation zur Map an. Werte hinzufügen kannst du z.B. mit put(key, value). Deine Map verwendet einen String als Schlüssel.
 
P

Panda9296

ja das ist klar. Frage ist halt eher die, der Key spiegelt den Produkttyp( fleisch, fisch gemüse) wieder. Muss ich jetzt für jede Möglichkeit einen Key mit der Put/add methode machen?
 
mihe7

mihe7

Klar. Wenn ich Dich richtig verstehe, willst Du zu einem Produkttyp eine Liste von Produkten speichern.
Java:
List<Product> products = map.computeIfAbsent(productType, k -> new ArrayList<Product>());
products.add(product);
 
P

Panda9296

ja es ist halt so. Ich kenne die Syntax ich versuche es halt umzusetzen und ich habe da einfach jetzt so ne Mauer die mich dran hindert es zu verstehen. Übungsaufgaben sind kein Problem. Das Ding ist also die Überlegung. Ich brauche zu jedem Produkttypen erstmal einen Key also der Key ist der Typ und dazu soll die Liste her. Was brauche ich jetzt im das geschachtelt schön hinzubekommen. Ich möchte sagen... wenn du Gemüse hast speichere das Produkt in der Liste mit dem Key Gemüse. Ich kanns nicht genauer beschreiben^^ voll der Wurm drin. Das ist aber irgendwie momentan bei vielen fortgeschrittenen Themen so,(Threads zum Beispiel). Mir ist ja bewusst, dass man Fußball spielen nicht von heute auf morgen lernt, aber manchmal ist es schon frustrierend :D
 
mihe7

mihe7

Ich möchte sagen... wenn du Gemüse hast speichere das Produkt in der Liste mit dem Key Gemüse. Ich kanns nicht genauer beschreiben^^ voll der Wurm drin.
Das ist das, was der Code in Kommentar #4 macht. Es geht auch ausführlicher:

Java:
// hol erst mal die Liste mit den Produkten eines bestimmten Produkttyps
List<Product> products = map.get(productType);
// falls zum Produkttyp noch nichts hinterlegt wurde, ist products null...
if (products == null) {
    products = new ArrayList<>(); // neue Liste für die Produkte erstellen und
    map.put(productType, products); // zur Map hinzufügen
}
// jetzt noch in die Liste das neue Produkt einfügen
products.add(product);
 
P

Panda9296

Das ist das, was der Code in Kommentar #4 macht. Es geht auch ausführlicher:

Java:
// hol erst mal die Liste mit den Produkten eines bestimmten Produkttyps
List<Product> products = map.get(productType);
// falls zum Produkttyp noch nichts hinterlegt wurde, ist products null...
if (products == null) {
    products = new ArrayList<>(); // neue Liste für die Produkte erstellen und
    map.put(productType, products); // zur Map hinzufügen
}
// jetzt noch in die Liste das neue Produkt einfügen
products.add(product);
ok danke jetzt habe ich es verstanden denk ich.
 
Thema: 

Verschachtelte Hashmap

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben