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

Java 将数组指定为映射的键和值,java,map,hashmap,Java,Map,Hashmap,我有两个字符串类型的数组: String [] a; String [] b; 然后是一张地图 Map<String, String> mapNumeric = new HashMap<String, String>(); 这也不好,因为新字符串()将删除以前的值。此外,如果执行嵌套for循环,它会将数组b的所有值指定为将创建键的数组的第一个元素的值 如果有人知道如何为同一映射的键分配一个数组,为同一映射的值分配另一个数组,或者您知道其他结构,请提供帮助。谢谢 PS我

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

String [] a;
String [] b;
然后是一张地图

Map<String, String> mapNumeric = new HashMap<String, String>();
这也不好,因为新字符串()将删除以前的值。此外,如果执行嵌套for循环,它会将数组b的所有值指定为将创建键的数组的第一个元素的值

如果有人知道如何为同一映射的键分配一个数组,为同一映射的值分配另一个数组,或者您知道其他结构,请提供帮助。谢谢 PS我在Java工作

更新
修复字符串[]我正在学习如何使用地图,因此这是一个错误。由于您的建议正在发挥作用

您已声明映射使用要使用的字符串的数组

如果您想
put(x,y)
其中x和y是字符串,那么您必须声明它
Map

对于你的例子,x是a的一个元素,y是b的一个元素


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

您声明映射使用要使用的字符串数组

如果您想
put(x,y)
其中x和y是字符串,那么您必须声明它
Map

对于你的例子,x是a的一个元素,y是b的一个元素


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

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

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[]keys=getKeys();//魔术
字符串[]值=getValues();//魔术
Map Map=newhashmap();
for(int i=0;i

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

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

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[]keys=getKeys();//魔术
String[]values=getValues();//magic
Map Map=newhashmap();
for(int i=0;i
(假设键和值具有相同的长度)

String[]a=任意值;
字符串[]b=任意值;
int minSize=Math.min(a.length,b.length);
Map mapNumeric=新HashMap(minSize);
对于(int i=0;i
String[]a=无论什么;
字符串[]b=任意值;
int minSize=Math.min(a.length,b.length);
Map mapNumeric=新HashMap(minSize);
对于(int i=0;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=getA();
字符串[]b=getB();
Map mapNumeric=新HashMap();
对于(int i=0;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=getA();
字符串[]b=getB();
Map mapNumeric=新HashMap();
对于(int i=0;i
a和b是字符串数组,看看他的代码。String[]a;String[]b;@PandaBearSoup:我知道。它们是不同的a和b;)无法以足够快的速度发布一个示例来说明这一点。此外,字符串数组必须在同一个循环中迭代:
for(int I=0;I
@user2501722我见过(可能更糟;)a和b是字符串数组,看看他的代码。字符串[]a;字符串[]b@我知道。这些是不同的a和b;)无法以足够快的速度发布示例来说明这一点。此外,字符串数组必须在同一个循环中迭代:
for(int i=0;i@user2501722我见过(可能更糟;)他不想要字符串的映射,他想要在映射中放置多个数组。@PandaBearSoup不是很确定,在我听来好像他在数组a中有键,在数组b中有值,现在他想要一个映射而不是两个数组。我也是这么想的。从最初的帖子中:>我希望a是键,b是值。所以它看起来是这样的:>>elementOfA=elementOfB>otherElementOfA=otherElementOfB@PandaBearSoup如果你是初学者,就不会有愚蠢的问题。我猜他还在学习。他不想要字符串的映射,他想要在映射中放置多个数组。@PandaBearSoup不是很确定,听起来他在数组a中有键,在数组b中有值,现在想要一个映射而不是两个数组。我也是这么想的。从最初的帖子中:>我希望a是键,b是值。所以它看起来是这样的:>>elementOfA=elementOfB>otherElementOfA=otherElementOfB@PandaBearSoup如果你是初学者,就不会有愚蠢的问题。我猜他还在学习。mapNonNumeric的声明在哪里?正如@Fildor的回答所指出的,你并没有真正使用
地图
。但即使你是,这也不是一个好主意。您应该很少使用可计算数据作为
HashMap
的键。如果
a
b
是数组,并且您执行
map.put(a,b);a[0]=“xyzy”
然后
a
现在位于错误的哈希桶中,并且从
a
b
的映射丢失。使用字符串数组作为映射的键,您希望实现什么。键应该提供自己的equals和hashCode方法的实现。你会怎么做?mapNonNumeric的声明在哪里?正如@Fildor的回答所指出的,你并没有真正使用
映射。但即使你是,这也不是一个好主意。您应该很少使用可计算数据作为
HashMap
的键。如果
a
b
是数组,并且您执行
map.put(a,b);a[0]=“xyzy”
然后
a
现在位于错误的哈希桶中,并且从
a
b
的映射丢失。使用字符串数组作为映射的键,您希望实现什么。一个键应该提供自己的equals和h的实现