Zweideminsionale Listen

  • Hallo Zusammen,


    vielleicht kann mir hier jemand helfen.


    Folgendes Problem. Ich habe in einer SQLite Datenbank einmal die Schild-ID und eine Chest-ID abgespeichert.
    Nun da ich nicht immer bei der Abfrage auf die SQLite zugreifen will, möchte ich das ganze in eine Liste speichern.


    Dann brauch in noch eine Methode die folgendes macht:


    Java
    public Storage getChest(int signID){
    // Wen ich eine Schild-ID angebe, soll die dazugehörige Chest-ID aus der Liste rauskommen
    // Dann soll überprüft werden ob die Truhe da ist
    Storage chest = plugin.world.getStorage(id);
    if (chest != null){
    return chest;
    } else {
    return null
    }
    }


    Wie mach ich das am Besten.

  • Wenn es für pro Schild jeweils nur eine Chest geben kann, würde sich eine HashMap anbieten. Hier könntest du "signID" als Key und "chestID" als Value verwenden. Da in Java nur Objects in HashMaps gespeichert werden dürfen (signID und chestID aber primitive Datentypen sind), musst du beides als "Integer" speichern (also quasi die Object-Repräsentation von int). Also bspw. so:


    Wenn du Datenbankabfragen minimieren möchtest, kommt es darauf an, wann du jeweils darauf zugreifen möchtest. Entweder du lädst beim Start alle Einträge aus der Datenbank und speicherst sie in der HashMap, oder alternativ prüfst du bei jedem Aufruf deiner Funktion, ob ein Eintrag in der HashMap vorhanden ist (mit storages.containsKey(signID);). Falls nicht, könntest du anschließend die Datenbankabfrage starten und die HashMap entsprechend um den Eintrag erweitern.


    Generell aber sind Datenbankaufrufe aus Performancesicht nicht ganz so schlimm (besonders wenn es nur lesender Zugriff ist). Wenn das nur sporadisch stattfindet ist das normalerweise kein Problem ;)


    Dein Funktionsaufruf mit HashMap-Ansatz könnte aber bspw. so aussehen:

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!