繁体   English   中英

如何在Java中将预定义值添加到Pair Hashmap

[英]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"));
}};

使用此“双括号”初始化可能有效,但这仅是因为

  1. 使用外部花括号创建Hashmap的匿名子类。
  2. 使用内部括号创建实例初始化器,您可以使用该初始化器来初始化映射。

从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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM