Ich muss oft aus dem String-Code in seinen Enum
Typ übersetzen. Siehe Ausschnitt unten. Ich denke, das ist sehr ineffizient. Wie kann ich verbessern das Verfahren deref
so dass:Wie verbessert man diesen Aufzählungstyp?
- Es wird THREAD sein.
- Es ist schneller.
Code:
public enum SigninErrorCodes
{
InvalidUser("a0"), InvalidPassword("b5"), NoServerResponse("s2");
SigninErrorCodes(String code) { _code = code; }
public String code() { return _code; }
public static SigninErrorCodes deref(String code)
{
SigninErrorCodes[] verbs = values();
Map<String, SigninErrorCodes> m = new HashMap<String,SigninErrorCodes>(3);
for(int i=0; i<verbs.length; i++)
m.put(verbs[i].code(), verbs[i]);
return m.get(code);
}
private final String _code;
}
Marcus, das ist interessant. Können Sie mich auf eine Quelle verweisen, die sagt, HashMaps sollten initialisiert werden, um ihre erwarteten Schlüssel zu verdoppeln? – Yishai
Wenn Sie die JavaDoc für HashMap betrachten, achten Sie genau auf die initialCapacity: http://java.sun.com/javase/6/docs/api/java/util/HashMap.html. 2 mal könnte es dehnen, aber es tut nicht weh hier. – akf
Ich glaube, 0,70-0,75 ist der übliche Bereich für den Ladefaktor (siehe Wikipedia, IIRC). Niedrige Ladefaktoren machen die Dinge durch Cache-Misses langsamer. –