我有一个类,它有一对夫妇的数据结构,这其中是一个HashMap。 但我想,所以我需要预装它HashMap中有默认值。 如何做到这一点,因为我不能把使用方法的对象里面?
class Profile
{
HashMap closedAges = new HashMap();
closedAges.put("19");
}
我用这个固定的,但我不得不对象中使用的方法。
class Profile
{
HashMap closedAges = loadAges();
HashMap loadAges()
{
HashMap closedAges = new HashMap();
String[] ages = {"19", "46", "54", "56", "83"};
for (String age : ages)
{
closedAges.put(age, false);
}
return closedAges;
}
}
你可以这样做:
Map<String, String> map = new HashMap<String, String>() {{
put("1", "one");
put("2", "two");
put("3", "three");
}};
这个Java成语叫做双括号初始化 :
第一支撑创建一个新的AnonymousInnerClass,第二声明当匿名内部类被实例化,当运行一个实例初始化代码块。
你想这样做,在你的类的构造函数,例如
class Example {
Map<Integer, String> data = new HashMap<>();
public Example() {
data.put(1, "Hello");
data.put(2, "World");
}
}
或使用Java的畸形双括号初始化功能:
class Example {
Map<Integer, String> data;
public Example() {
/* here the generic type parameters cannot be omitted */
data = new HashMap<Integer, String>() {{
put(1, "Hello");
put(2, "World");
}};
}
}
最后,如果你HashMap
是你的类的静态字段,可以进行内部初始化static
块:
static {
data.put(1, "Hello");
...
}
为了解决Behes评论,如果你不使用Java 7,填写<>
括号与类型参数,在这种情况下<Integer, String>
。