【发布时间】:2013-06-19 15:09:36
【问题描述】:
我有两个字符串类型数组:
String [] a;
String [] b;
然后是地图
Map<String, String> mapNumeric = new HashMap<String, String>();
我希望 a 成为键,b 成为值。所以它看起来像这样:
- elementOfA = elementOfB
- otherElementOfA = otherElementOfB
等等……
mapNonNumeric.put( a, b); 不起作用我尝试通过以下方式逐个元素传递:
for( String key : a) {
mapNumeric.put( key, new String() );}
for( String value: b) {
mapNumeric.put(new String(), value );}
这也不好,因为 new String() 将删除以前的值。此外,如果您进行嵌套 for 循环,它会将数组 b 的所有值分配为将创建键的数组的第一个元素的值。
如果有人知道如何为同一映射的键分配一个数组,为同一映射的值分配另一个数组,或者如果您知道其他可以解决问题的结构,请提供帮助。谢谢。 PS我正在使用Java
更新 修复 String[] 我正在学习如何使用地图,所以这是一个错误。感谢您的建议,现在正在工作
【问题讨论】:
-
mapNonNumeric 的声明在哪里?
-
您并没有真正使用
Map<String[], String[]>,正如@Fildor 的回答所指出的那样。但即使你是,这也不是一个好主意。您应该很少使用可放置数据作为HashMap的键。如果a和b是数组,而您使用map.put(a, b); a[0] = "xyzzy";,那么a现在位于错误的哈希桶中,并且从a到b的映射会丢失。 -
你想通过使用String数组作为Map的key来实现什么。一个键应该提供他们自己的 equals 和 hashCode 方法的实现。你会怎么做?