将数组指定为映射的键和值

时间:2013-06-19 15:09:37

标签: java map hashmap

我有两个Type String数组:

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 );}

这也不好,因为新的String()将删除先前的值。此外,如果你执行嵌套for循环,它会将数组b的所有值分配为将创建键的数组的第一个元素的值。

如果有人知道如何为键分配一个数组而另一个数组为同一个地图的值分配,或者如果您知道其他结构可以解决这个问题,请提供帮助。谢谢。 PS我在Java工作

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

4 个答案:

答案 0 :(得分:2)

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

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

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

你必须迭代a和b,将所有这些插入地图,就像你现在在各种答案中看到的一样。

答案 1 :(得分: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];
}

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

答案 2 :(得分: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]);
}

答案 3 :(得分: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]);
}