2009-07-22 3 views
0

Ich habe eine Reihe von Flags, die Teil einer großen Textdatei als einzelne Zeichen sind. Vor der Verarbeitung der Datei ordnet ich jedes Flag der ID einer Eigenschaft zu, die es repräsentiert. Während der Verarbeitung der Datei muss ich diese Mappings so schnell wie möglich nachschlagen (das mache ich sehr oft).Was ist die beste Map-Implementierung, die beim Speichern von Ganzzahlen mit char-Schlüsseln verwendet wird?

Momentan speichere ich diese in einer HashMap. Und der Code sieht wie folgt aus:

private HashMap<Integer, Integer> _propertyKeys; 

    private int _getKeyedProperty(char key) { 
     return (_propertyKeys.get((int) key)); 
    } 

Gibt es eine Möglichkeit, dies zu tun schneller werden könnte, um eine bessere Umsetzung der Map als HashMap oder sogar Arrays mit Boxen/Unboxing zu verhindern?

+0

Nun, Sie könnten ein Array mit 65'536 int Einträge verwenden und Ihre Schlüssel als Index der Elemente haben. Ich schätze, Sie können nicht weniger Zeitaufwand haben als das. – HerdplattenToni

Antwort

2

Sie könnten TIntIntHashMap von GNU Trove verwenden. Es verwendet Primitive für die Schlüssel und Werte.

Ich habe die primitiven GNU-Trove-Listenklassen verwendet und festgestellt, dass sie eine spürbare Leistungsverbesserung im Vergleich zu den Standardlistenklassen mit Autoboxing für Primitive bieten.

+0

Danke, ich liebe die Tatsache, dass C# Primitive als Typen für alle generischen Sachen unterstützt. Schade Java nicht. Übrigens ist Ihr Link zu einem lokalen JavaDoc :) Natürlich kann Google mir helfen, es zu finden. –

+0

Ups .... Fixed. – Mark

0

Wenn Sie den vollständigen Satz von Flags kennen, die verwendet werden, können Sie eine Enum von ihnen erstellen und java.util.EnumMap verwenden.

Verwandte Themen