如何在Java 7中使用集合文字?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我试过以下几句话:

Map<Character, Color> map={new Character('r'):Color.red,new Character('b'):Color.black};

但是NetBeans 7拒绝了这个错误消息。'{' expected, ';' expected

我已经将源代码/二进制格式设置为‘JDK 7’,将平台设置为‘JDK 1.7’,还有什么需要做的吗?

提问于
用户回答回答于

Java 7不支持集合文字,他们甚至没有将它写入Java 8中

如果你只需要不可变的集合,则可以使用Google的Guava库。

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");

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)
);
用户回答回答于

你需要定义一个具体的映射实现,可以选择地与双大括号初始化相结合:

Map<Character, Color> map = new HashMap<Character, Color>() {{ 
  put(new Character('r'), Color.red);
  put(new Character('b'), Color.black );
}};

扫码关注云+社区