Veröffentlicht 31. Juli 200322 j Ich hol mir aus nem Hashtable mit h.elements() eine Enumeration. Hashtable t = new NABHashtable("","PDM400","MGRP","Z",tmpWAGR+" "+tmpFOGR); Enumeration enum = t.elements(); tmpTable = new NPPageTable(); while(enum.hasMoreElements()) { tmpTableRecord = new NPPageTableRecord(); tmpTable.addRecord(tmpTableRecord); String mgrp = (String)enum.nextElement(); // WAGR tmpField = new NPPageField("", nabjPruefwert.getNABWert("","PDM400","MGRP","",mgrp)); tmpTableRecord.addElement(1, "T_MGRP", tmpField); tmpField = new NPPageField("", mgrp); tmpTableRecord.addElement(1, "MGRP", tmpField); } tmpPageData.addElement("S0222" ,1, "T002", tmpTable); Ich will mir die einzelenen PageFields wieder holen, aber sie stehen in der genau umgekehrten Reihenfolge wie im Hashtable in meinem TableRecord. Kann mir einer verraten warum?
31. Juli 200322 j Hi, ich verstehe zwar nicht ganz was du da machst, aber eine Hashtable ist nicht sortiert und behält auch keine Reihenfolge. Sie ist nur dazu da, über einen key ein Object zu liefern. Gruß Jaraz
31. Juli 200322 j Autor Aber in meinem Hashtable stehen die Objekte noch in der Richtigen Reihenfolge drinnen. Aber in der Enumeration nicht! Kann es sein, dass der Hashtable ein Stapel ist, den die Enumeration von oben nach unten aufnimmt? Ups: verklickt... (Jaraz)
31. Juli 200322 j Aber in meinem Hashtable stehen die Objekte noch in der Richtigen Reihenfolge drinnen. Zufall, da du alle Objekte direkt vor dem einfügen erzeugst und sie somit einen aufsteigenen Hashcode haben. Eine Hashtable ist UNSORTIERT. Alles was eine sortierung oder Reihenfolge benötigt musst du mit anderen Mitteln realisieren. (TreeMap, ArrayList, Vector....) Gruß Jaraz
31. Juli 200322 j Autor Ich fülle meinen Hashtable aber aus einem Vector, Dadurch ist der Hashtable auf jedenfall in der richtigen Reihenfolge belegt, wenn ich dich richtig verstehe. Aber das Enumeration-Objekt liest den Hashtable von oben nach unten!
31. Juli 200322 j Original geschrieben von Krain Dadurch ist der Hashtable auf jedenfall in der richtigen Reihenfolge belegt, wenn ich dich richtig verstehe. Nein, nein, nein!!!!!!!! Die Reihenfolge wie Elemente in einem Hashtable abgelegt werden ist ZUFÄLLIG (nicht wirklich, aber man sollte es so betrachten). Einen Hashtable kannst Du deshalb nur verwenden, wenn die Reihenfolge in der die Elemente gespeichert werden völlig egal ist. Wenn Du eine Datenstruktur benötigst, die eine bestimmte Reihenfolge garantiert, dann musst Du eine Liste wie z.B. LinkedList oder ArrayList nehmen. Gruß Jaraz
31. Juli 200322 j Autor Okay - sorry Ich verstehe schon. Dann wird wohl das auch nicht funktionieren um es sortiert zu bekommen: String[] enum =(String[]) hashtable.values().toArray(); Hab es anders gelöst: Zur selben Zeit, wie ich den Hashtable fülle, fülle ich mir auch einen Vector. Diesen kann ich mir dann aus dem Hashtable-Objekt zurückgeben lassen. Trotzdem danke für deine Hilfe. Und entschuldige meine nervenaufreibende Unverständnis
31. Juli 200322 j Zur selben Zeit, wie ich den Hashtable fülle, fülle ich mir auch einen Vector. Diesen kann ich mir dann aus dem Hashtable-Objekt zurückgeben lassen. Wenn du nicht unbedingt eine Hashtable benötigst (weil im 1.1er Applet) sondern auch die neuere Map verwenden kannst dann solltest du dir mal die LinkedHashMap ansehen, die macht nämlich genau das was du willst. Die Einträge bleiben schnell über eine interne HashMap erreichbar und beim Iterieren mit einem Iterator bekommst du die gleichen Reihenfolge, in der die Elemente in die Map eingefügt wurden. Ciao Christian
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.