Wie am performantesten Collections iterieren?

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.

Vielleicht kannst du dich bei Interesse hier mal durchhangeln:

http://www.javaolympus.com/J2SE/JavaPerformance/Java…

Mehr gibt es hier:
http://www.google.de/search?hl=de&q=java+collections…

Gruss, Patrick