繁体   English   中英

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

[英]Assigning arrays as keys and values of a map

我有两个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工作

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

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

如果要将put(x,y)放在x和y为String的位置,则必须将其声明为Map<String,String>

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

您将不得不迭代a和b以将所有这些插入到Map中,正如您现在可以在各种答案中看到的那样。

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

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

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

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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