Wil*_*Boy 51 c# java dictionary map new-operator
在Java中是否可以使用已经在其中声明的项来创建一个Dictionary?就像下面的C#代码一样:
Dictionary<string, int> d = new Dictionary<string, int>()
{
{"cat", 2},
{"dog", 1},
{"llama", 0},
{"iguana", -1}
};
Run Code Online (Sandbox Code Playgroud)
我该怎么做以及我使用什么类型的?我读过字典已经过时了.
Sea*_*lly 74
这将做你想要的:
Map<String,Integer> map = new HashMap<String, Integer>(){{
put("cat", 2);
put("dog", 1);
put("llama", 0);
put("iguana", -1);
}};
Run Code Online (Sandbox Code Playgroud)
此语句创建HashMap的匿名子类,其中与父类的唯一区别是在实例创建期间添加了4个条目.它在Java世界中是一个相当普遍的习惯用法(虽然有些人发现它有争议,因为它创建了一个新的类定义).
由于这种争议,从Java 9开始,有一种新的习惯用法可以方便地构建地图:静态Map.of方法的族.
使用Java 9或更高版本,您可以创建所需的地图,如下所示:
Map<String, Integer> map = Map.of(
"cat", 2,
"dog", 1,
"llama", 0,
"iguana", -1
);
Run Code Online (Sandbox Code Playgroud)
对于较大的映射,此替代语法可能不太容易出错:
Map<String, Integer> map = Map.ofEntries(
Map.entry("cat", 2),
Map.entry("dog", 1),
Map.entry("llama", 0),
Map.entry("iguana", -1)
);
Run Code Online (Sandbox Code Playgroud)
(如果静态导入Map.entry而不是显式引用,这尤其好用).
除了仅使用Java 9+之外,这些新方法与前一种方法并不完全相同:
但是,这些差异对于许多用例而言并不重要,这使得它成为较新版本Java的一种很好的默认方法.
fir*_*w52 12
Map<String,Integer> map = new HashMap<String, Integer>(){{
put("cat", 2);
put("dog", 1);
put("llama", 0);
put("iguana", -1);
}};
Run Code Online (Sandbox Code Playgroud)
咬一下子弹,然后输入地图名称!
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("cat", 2);
map.put("dog", 1);
map.put("llama", 0);
map.put("iguana", -1);
Run Code Online (Sandbox Code Playgroud)
您还可以执行以下操作,这可以节省一些带有长列表的输入:
Object[][] values = {
{"cat", 2},
{"dog", 1},
{"llama", 0},
{"iguana", -1}
};
for (Object[] o : values) {
map.put((String) o[0], (Integer) o[1]);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38891 次 |
| 最近记录: |