1

我有两个字符串类型数组:

String [] a;
String [] b;

然后是一张地图

Map<String, String> mapNumeric = new HashMap<String, String>();

我希望a成为键,b成为值。所以它看起来像这样:

  • 元素A = 元素B
  • 其他元素A = 其他元素B

等等...

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

更新修复字符串 [] 我正在学习如何使用地图,所以这是一个错误。感谢您的建议现在正在工作

4

4 回答 4

2

您声明地图使用要使用的字符串数组

如果你想put(x,y)x 和 y 是 String ,那么你必须声明它Map<String,String>

对于您的情况,x 将是 a 的一个元素,y 是 b 的一个元素。

您必须遍历 a 和 b 才能将它们全部插入到 Map 中,正如您现在在各种答案中看到的那样。

于 2013-06-19T15:14:00.313 回答
1

按照您定义它的方式,您将一个数组作为键,另一个作为该键的值。你可能想要这样:

String[] keys   = getKeys();    // magic
String[] values = getValues();  // magic
Map<String, String> map = new HashMap<>();
for (int i = 0; i < keys.length; i++) {
   map.put(keys[i], values[i];
}

(假设键和值具有相同的长度)

于 2013-06-19T15:15:34.080 回答
1

试试这个:

String [] a = getA();
String [] b = getB();
Map<String, String> mapNumeric = new HashMap<>();
for (int i=0; i < Math.min(a.length, b.length); i++) {
   mapNumeric.put(a[i], b[i]);
}
于 2013-06-19T15:16:59.330 回答
0
String [] a = whatever;
String [] b = whatever;
int minSize = Math.min(a.length, b.length);
Map<String, String> mapNumeric = new HashMap<String, String>(minSize);

for (int i = 0; i < minSize; i++) {
  mapNumeric.put(a[i], b[i]);
}
于 2013-06-19T15:16:21.363 回答