[英]How do I use an class defined array and add values (pre-defined parameters) to it?
[英]How to add pre-defined values to Pair Hashmap in Java
我知道如何将值添加到哈希图中,但是如果哈希图中包含对元组,该怎么办。
我尝试了以下
private HashMap<String, Pair<String,String>> s = new HashMap<String, Pair<String, String>>() {{put("New York",("US Dollar", "NYC"));
}};
它提供了一个错误说明:
线上有多个标记
- 令牌“,”的语法错误,无效的赋值运算符
- 作业的左侧必须是变量
没有Java语法支持,无法在Java中创建Pair构造,例如地图文字。 如果像这样将"US Dollar", "NYC"
放在括号中,则编译器将假定存在某种表达式。 它找到逗号并抱怨没有赋值运算符。 实际上,其他运算符也是可能的,例如+
,但这就是编译器给出的信息。 解析器只是降低了解析树中“赋值表达式”的可能性,试图弄清原来是语法错误。
假设您已经创建了自己的Pair
类,并且已经在范围内,只需使用new
显式创建Pair
。 (您可以使用Java 7中提供的菱形运算符来缩短代码。)
private HashMap<String, Pair<String, String>> s = new HashMap<>() {{
put("New York", new Pair<>("US Dollar", "NYC"));
}};
使用此“双括号”初始化可能有效,但这仅是因为
Hashmap
的匿名子类。 从Java 9开始,您可以使用Map.of
指定具有特定值的Map
,而无需额外的匿名类。
private Map<String, Pair<String,String>> s = Map.of("New York", new Pair<>("US Dollar", "NYC"));
您可能还需要考虑创建自己要使用的有意义的类,而不是通用的Pair
类。
从Java 9开始,您可以使用Map.of
:
Map<String, Pair<String,String> values = Map.of("New York", new Pair<>("US Dollar", "NYC"));
我不知道Pair
是什么,因为默认JDK中没有Pair
类,但是我假设它具有一个接受两个值的构造函数。
您的方法将创建一个匿名类,该类也具有对封闭对象的引用,因此这不是一个好的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.