Java Tipp: Initialisierung einer Map
2 Comments Published by Christian Ullenboom on Mittwoch, September 24, 2008 at Mittwoch, September 24, 2008.Der übliche Weg führt über ein put(), wobei man das unterschiedlich schreiben kann:
Map<String, String> map = new HashMap<String, String>();
map.put( "name", "chris" );
map.put( "email", "a@b.c" );
Oder auch mit einem Exemplarinitialisierer (das ist aber schmutzig in meinen Augen!):
Map<String, String> map = new HashMap<String, String>() {{
put( "name", "chris" );
put( "email", "a@b.c" );
}};
Alternative: http://commons.apache.org/collections/api-release/org/apache/commons/collections/MapUtils.html#putAll(java.util.Map,%20java.lang.Object[]). Die API nennt ein Beispiel:
Map colorMap = MapUtils.putAll(new HashMap(), new String[][] {
{"RED", "#FF0000"},
{"GREEN", "#00FF00"},
{"BLUE", "#0000FF"}
});
Die Apache Common Collections sind aber erst einmal nicht generisch!
Für http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Maps.html ist so was wohl geplant, aber bisher noch nicht implementiert.


hm... ich finde die erste möglichkeit eigentlich recht schön, jedeR java programmiererIn kann von anfang an sowas schreiben/lesen ohne viel zu überlegen. die erste möglichkeit ist auch gleich lang wie alle anderen ... für mich gibts da net viel zu überlegen.
die letzte methode find ich überhaupt am furchtbasten - wären da zwei verschiedenen typ-parameter (statt zweimal string) müsste man hier einen object array verwenden (oder nicht?).
naja...
Sehe ich das richtig?
Methode 2 generiert eine anonyme Klasse und Methode 3 ein zweidimensionales String-Array und das alles nur damit es ein ganz klein wenig besser lesbar ist.
Resourcen sparen ist wohl nicht mehr?
Hoffentlich sieht das die "Java ist langsam"-Fraktion nicht... ;-)