Schrift
[thread]1072[/thread]

[Java] statische HashMap



<< >> 5 Einträge, 1 Seite
vayu
 2007-04-23 11:41
#9985 #9985
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
Hi,

ich habe eine Konfigurationsklasse in meinem Projekt angelegt, das Ding hat keinen Konstruktor und enthält nur Variablen (meist Strings)

Was ich nun aber bräuchte wäre eine HashMap, die ich dort auch schon mit Werten vorbefüllen müsste. Also quasi einen Hash wie in Perl.

Code (perl): (dl )
1
2
3
my %hash = ("key1" => "value1",
               
    "key2" => "value2");


Wie funktioniert das? Ich find dazu irgendwie nichts.
GwenDragon
 2007-04-23 11:59
#9986 #9986
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
vayu
 2007-04-23 12:05
#9987 #9987
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
wie ich eine HashMap mit new neu anlege ist mir klar. Sowas kann man allerdings nur im Konstruktor, oder in einer Funktion tun.

ausserhalb, funktioniert das nicht. Normale Arrays kann man in Java so statisch anlegen.

Code: (dl )
public static final String[] stacks = {"Com", "Sys", "Diag", "IO"};


nun suche ich eine Möglichkeit dasgleiche mit einer HashMap zu machen :)
vayu
 2007-04-23 12:50
#9988 #9988
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
habs jetzt so gemacht:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
public final class Constants {

public static final HashMap<String, String> hash = initHash();

public static HashMap<String, String> initHash() {
HashMap<String, String> newHash = new HashMap<String, String>();
newHash.put("a","b");
return newHash;
}
}
murphy
 2007-04-24 11:06
#9989 #9989
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
[quote=vayu,23.04.2007, 10:05]wie ich eine HashMap mit new neu anlege ist mir klar. Sowas kann man allerdings nur im Konstruktor, oder in einer Funktion tun.
[...][/quote]
Neben der Variante, die Du gewählt hast, ist es auch möglich, die Variable in einem anonymen statischen Codeblock zu initialisieren -- die statischen Codeblöcke werden von Java sozusagen zu einem Klassenkonstruktor zusammengebaut.

Also zum Beispiel so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Map;
import java.util.HashMap;

public final class Foo {

private Foo() {
}

public static final Map<String, String> bar = new HashMap<String, String>();

static {
bar.put("rhabarber", "quark");
bar.put("bananen", "brei");
}

}


(getestet mit javac 1.5.0_07 auf MacOS X)
When C++ is your hammer, every problem looks like your thumb.
<< >> 5 Einträge, 1 Seite



View all threads created 2007-04-23 11:41.