Datenstruktur gesucht



  • Moin allerseits!

    Gerade suche ich an einer Datenstruktur, um eine Reihe Objekte einer selbstgebauten Klasse aufzunehmen.
    Da ich mich mit Java nicht so sehr auskenne, frage ich euch, was sich dafür anbietet.

    Die Klasse sieht prinzipiell so aus:

    class MyClass
    {
        String Name;
        String Kategorie;
        String[] Attribute;
    }
    

    Name ist ein eineindeutiger Bezeichner. Unter Attribute können 1..n Attribute angegeben sein, Kategorie ist 1..1.

    Folgende Operationen würde ich mit dieser Menge gerne anstellen:
    - Suche nach allen Objekten der Kategorie 1
    - Suche nach allen Objekten mit Attribut A
    - Suche nach allen Objekten der Kategorie 2 mit den Attributen B und C
    - Rückgabe des (einen) Objektes mit Namen abc123

    Eingefügt wird fast nichts, aber gelesen sehr viel. Reihenfolge ist egal.

    Was bietet sich hier an?



  • Sind die verschiedenen Kategorien und Attribute fix vorgegeben oder frei wählbare Strings? Haben Attribute Key+Value oder nur einen Namen?

    MfG SideWinder



  • Die Attribute haben nur einen Namen und sind ebenso wie die Kategorien fix vorgegeben.



  • enum Category
    {
        CAT_A,
        CAT_B;
    }
    
    enum Attribute
    {
        ATTR_A,
        ATTR_B;
    }
    
    enum MyClass
    {
        private String name;
        private Category category;
        private Set<Attribute> attributes;
    }
    

    Sollte sich aus den Attributen keine schön durchsuchbare Set erstellen lassen musst du wohl auf sowas wie List<Attribute> zurückgreifen.

    MfG SideWinder



  • Danke für deine Ideen!

    Die Attribute also als Set.. hm.

    Und dann die MyClass-Objekte einfach in eine schön iterierbare Struktur reinlegen und einfach und schnell jeweils das Set auf passende Attribute prüfen?

    Könnte klappen. Ich schau es mir an. Danke!



  • Genau MyClass in eine List, bzw. je nach Anwendungsgebiet, aber ich nehme an eine List. Aber die Attribute musst du schnell nach bestimmten durchsuchen können, das geht am schnellsten mit einem Set. HashSet hat dafür sogar O(1)-Zugriff.

    MfG SideWinder



  • Klingt gut und genau nach dem, was ich suchte.

    Danke!


Anmelden zum Antworten