Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

TreeAufbau nach HashMap

Empfohlene Antworten

Hi Leute :)

Kennt jemand ein Beispiel in welchem ein Tree anhand einer im Vorraus abgefüllten HashMap aufgebaut wird? :confused:

Das Ding ist folgendes - möchte schlussendlich einen JarViewer haben.

* habe directories nach Jarfiles abgesucht

* die Pfade dann nach Trennzeichen / abgefüllt

* die gesplitteten Objekte in eine HashMap gefüllt

* wenn bereits ein Element existiert hat (zB C), habe ich das Teil nicht mehr erstellt

Key, Value

-----------

null, root

root, C:

C:, OrdnerA

OrdnerA, OrdnerB

OrdnerB, test.jar

Der Key ist immer der Parent vom Value.

Ich bräuchte nur einen Anhaltspunkt, wie ich das ungefähr machen müsste.

Muss ich dazu die HashMap auslesen und dazu dem Tree das Objekt übergeben? :confused:

Danke

Hi,

Was heißt denn "die Pfade dann nach Trennzeichen / abgefüllt"? Da kann ich mir nichts drunter vorstellen.

Wieso erstellst Du überhaupt eine HashMap und nicht gleich einen Baum?

Naja. Aber an sich, müßtest Du Dir erst das Root-Element besorgen. Davon erfragst Du dann die Values. Somit hast Du schon mal die Wurzel und ihre Kinder. Und das kannst Du dann wiederum (also rekursiv) für die Kinder der Wurzel machen. Du suchst deren Values in der Hashmap und fügst sie als Kinder der Wurzel-Kinder in den Baum ein. Und dann weiter ...

Muss ich dazu die HashMap auslesen und dazu dem Tree das Objekt übergeben?

Wäre wohl ein bißchen zu einfach. Woher soll der Baum wissen, wo Du das Objekt einfügen willst?

Angenommen es gibt diese beiden Pfade:

c:\OrdnerA\UnterordnerA\datei

c:\OrdnerB\UnterordnerA\datei2

Dann hast du ein Problem, weil du den zweiten UnterordnerA nicht speichern kannst. Ich weiß ja nicht wie es bei dir aussieht, aber ich habe auf meinem System durchaus Ordner, die gleich heißen ;)

Ein Tree macht nur dann Sinn, wenn du mehr als ein Child pro Parent haben kannst (ansonsten ist das ganze eine einfache Liste). Über deine Struktur innerhalb der HashMap kannst aber z.B. mehrere Einträge in einem Verzeichnis gar nicht abbilden, da sonst der zweite Eintrag den ersten überschreibt (pro Key kann es nur ein Child geben, also pro Verzeichnis auch nur einen Eintrag für dieses Verzeichnis).

Du solltest daher generell nochmal die Struktur überdenken und/oder dein Problem besser formulieren, damit wir wissen, was du eigentlich genau möchtest.

@perdi, @Whatever: Ist es bei der HashMap nicht so, daß sie Values mit gleichem Key in eine Liste im selben Bucket sichert?

@perdi: Soweit ich weiß, ist ein Dateisystem immer eine Baumstruktur, daher bietet sich ein Tree doch geradezu an. Allein unter C:\ hast Du nach einer Windoof-Installation mehr als einen Ordner ;)

Object put( Object key, Object value )

Speichert den Schlüssel und den Wert in der Hash-Tabelle. Falls sich zu diesem Schlüssel schon ein Eintrag in der Hash-Tabelle befand, so wird der alte Wert überschrieben und der vorherige Wert zum Schlüssel zurückgegeben. Ist der Schlüssel neu, liefert put() den Rückgabewert null.

Sobald also 2 Ordner gleich heißen, hat man ein Problem.

OK. Dann hab' ich was verwechselt.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.