520 Stimmen

Der effizienteste Weg, einen Map-Wert in Java zu inkrementieren

Ich hoffe, diese Frage wird nicht als zu grundlegend für dieses Forum angesehen, aber wir werden sehen. Ich frage mich, wie einige Code für eine bessere Leistung zu refaktorieren, die ein Bündel von Zeiten ausgeführt wird.

Angenommen, ich erstelle eine Worthäufigkeitsliste mit einer Map (wahrscheinlich einer HashMap), wobei jeder Schlüssel ein String mit dem zu zählenden Wort ist und der Wert ein Integer, der jedes Mal erhöht wird, wenn ein Token des Worts gefunden wird.

In Perl wäre das Inkrementieren eines solchen Wertes trivial einfach:

$map{$word}++;

Aber in Java ist es viel komplizierter. Hier die Art und Weise, wie ich es derzeit mache:

int count = map.containsKey(word) ? map.get(word) : 0;
map.put(word, count + 1);

Das hängt natürlich von der Autoboxing-Funktion in den neueren Java-Versionen ab. Ich frage mich, ob Sie einen effizienteren Weg zur Inkrementierung eines solchen Wertes vorschlagen können. Gibt es sogar gute Leistungsgründe dafür, das Collections-Framework zu meiden und stattdessen etwas anderes zu verwenden?

Update: Ich habe einige der Antworten getestet. Siehe unten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X