
这将做您想要的:
Map<String,Integer> map = new HashMap<String, Integer>(){{ put("cat", 2); put("dog", 1); put("llama", 0); put("iguana", -1);}};该语句创建HashMap的匿名子类,与父类的唯一区别是在实例创建过程中添加了4个条目。在Java世界中,这是一个相当普遍的习惯用法(尽管有些人有争议,因为它创建了一个新的类定义)。
由于这一争议,从Java
9开始,有一个新的惯用法来方便地构建地图:静态Map.of方法家族。
使用Java 9或更高版本,您可以按以下方式创建所需的地图:
Map<String, Integer> map = Map.of( "cat", 2, "dog", 1, "llama", 0, "iguana", -1);
对于较大的地图,此替代语法可能不太容易出错:
Map<String, Integer> map = Map.ofEntries( Map.entry("cat", 2), Map.entry("dog", 1), Map.entry("llama", 0), Map.entry("iguana", -1));(如果Map.entry是静态导入而不是显式引用的,则特别好)。
除了仅适用于Java 9+,这些新方法与以前的方法也不完全相同:
- 它们不允许您指定使用哪种Map实现
- 他们只创建不可变的地图
- 他们不会创建Map的匿名子类
但是,对于许多用例而言,这些差异无关紧要,这使得它成为Java较新版本的良好默认方法。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)