用Java在字典中可以声明已经声明的项目吗?就像下面的C#代码一样:
Dictionary<string, int> d = new Dictionary<string, int>()
{
{"cat", 2},
{"dog", 1},
{"llama", 0},
{"iguana", -1}
};
我该怎么办?我要使用哪种类型?我读过字典已过时。
这将做您想要的:
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+,这些新方法与以前的方法也不完全相同:
但是,对于许多用例而言,这些差异无关紧要,这使得它成为Java较新版本的良好默认方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句