In meiner Anwendung muss ich XML Files auslesen und dazu Metadaten finden, die ich aus einem zweiten XML File erhalte. Die Metadaten fülle ich mit Hilfe des DocumentBuilders in ArrayListen ab.
Ein grosser Teil meiner Arbeit besteht also darin, ArrayListen zu durchsuchen. Unten seht ihr ein Beispiel, wie ich das mache.
Mich würde interessieren, ob und wie man das performanter machen könnte.
public static String getPropertyTypeName(String type) {
for (Iterator iter = properties.iterator(); iter.hasNext():wink: {
PropertyTypeMetadata propertyType = (PropertyTypeMetadata) iter.next();
if (propertyType.getType().equals(type)) {
return propertyType.getName();
}
}
throw new NullPointerException("No metadata for " + type + " found!");
}
Hi,
Du könntest statt einer ArrayList ja eine andere Datenstruktur verwenden.
Wie wärs mit einer Hashtable oder einem Baum?
lg
georg
Sieht für mich ganz sauber aus. Warum willst du es denn performatnter machen. Hast du Laufzeitprobleme?
Es gibt eigentlich nur eine einzige Zeile, die ich ändern würde:
if (propertyType.getType().equals(type)) {
nach
if (type.equals(propertyType.getType())) {
Dadurch wird abgefangen, dass der Type im aktuellen PropertyTypeMetadata null sein kann. type musst du nur zu Beginn einmal prüfen.
String.equalsIgnoreCase(String) ist auch etwas schneller als ein equals, da ein Cast auf den String entfallen kann.
/dirk
Sieht für mich ganz sauber aus. Warum willst du es denn
performatnter machen. Hast du Laufzeitprobleme?
Nein, Laufzeitprobleme gibt es nicht, ich fragte einfach mal interessehalber.
Es gibt eigentlich nur eine einzige Zeile, die ich ändern
würde:
if (propertyType.getType().equals(type)) {
nach
if (type.equals(propertyType.getType())) {
Dadurch wird abgefangen, dass der Type im aktuellen
PropertyTypeMetadata null sein kann. type musst du nur zu
Beginn einmal prüfen.
String.equalsIgnoreCase(String) ist auch etwas schneller als
ein equals, da ein Cast auf den String entfallen kann.
/dirk
ok, danke für deine Anmerkungen.
Hi,
Du könntest statt einer ArrayList ja eine andere Datenstruktur
verwenden.
Wie wärs mit einer Hashtable oder einem Baum?
Ich überlegs mir mal. Das würde mich allerdings einiges an Umbauzeit kosten.
Es ist ja nicht so, dass ich Laufzeitprobleme habe, ich fragte einfach mal aus Interesse.
Danke auch dir für die Anregungen.