我试过以下一行:
Map<Character, Color> map={new Character('r'):Color.red,new Character('b'):Color.black};
Run Code Online (Sandbox Code Playgroud)
但Netbeans 7拒绝这一点,并显示错误消息'{' expected, ';' expected.
我将Source/Binary格式设置为'JDK 7',将平台设置为'JDK 1.7',还有什么我需要做的吗?
Nat*_*tix 50
Java 7和Java 8都不支持集合文字,正如这个问题所讨论的那样:Project Coin的集合增强功能是否会在JDK8中进行?
如果您只需要不可变的集合,则可以使用Google的Guava库.ImmutableList,ImmutableSet并ImmutableMap有几个重载的工厂方法甚至构建器,使创建集合变得容易:
List<Integer> list = ImmutableList.of(1, 1, 2, 3, 5, 8, 13, 21);
Set<String> set = ImmutableSet.of("foo", "bar", "baz", "batman");
Map<Integer, String> map = ImmutableMap.of(1, "one", 2, "two", 3, "three");
Run Code Online (Sandbox Code Playgroud)
编辑
Java 9添加了类似于Guava的集合工厂方法:
List.of(a, b, c);
Set.of(d, e, f, g);
Map.of(k1, v1, k2, v2)
Map.ofEntries(
entry(k1, v1),
entry(k2, v2),
entry(k3, v3),
// ...
entry(kn, vn)
);
Run Code Online (Sandbox Code Playgroud)
Tho*_*mas 11
您需要定义具体的地图实现,可选择与双括号初始化相结合:
Map<Character, Color> map = new HashMap<Character, Color>() {{
put(new Character('r'), Color.red);
put(new Character('b'), Color.black );
}};
Run Code Online (Sandbox Code Playgroud)