当前位置: 首页 > 面试题库 >

Java HashMap关联多维数组无法创建或添加元素

宰子琪
2023-03-14
问题内容

好的,所以我花了几个小时试图用Java中的HashMap这个概念来解决问题,但只是无法弄清楚。我看过许多教程,但似乎都没有一个能满足我的确切要求,我无法使其正常运行。

我试图用Java(或类似的东西)创建一个关联的多维数组,以便我既可以使用字符串键又可以保存到数组或从数组中检索。

这就是我将在PHP中执行的操作,并最好地解释了我要执行的操作:

//loop one - assign the names
myArray['en']['name'] = "english name";
myArray['fr']['name'] = "french name";
myArray['es']['name'] = "spanish name";

//loop two - assign the description
myArray['en']['desc'] = "english description";
myArray['fr']['desc'] = "french description";
myArray['es']['desc'] = "spanish description";

//loop three - assign the keywords
myArray['en']['keys'] = "english keywords";
myArray['fr']['keys'] = "french keywords";
myArray['es']['keys'] = "spanish keywords";

//later on in the code be able to retrive any value similar to this
english_name = myArray['en']['name'];
french_name = myArray['fr']['name'];
spanish_name = myArray['es']['name'];

这是我在Java中尝试过的方法,但无法正常工作:

HashMap<String, HashMap<String, String>> myArray = new HashMap<String, HashMap<String, String>>();

myArray.put("en" , put("name", "english name")); //gives me "cannot find symbol" at second put

myArray.put("en" , ("name", "english name")); //gives me "')' expected" after second comma

因此,我敢肯定我很想念它,但请指出来,因为这很令人沮丧!

谢谢

编辑:

所以这是一些有关如何实现我接受的答案的工作代码

import java.util.*;

HashMap<String, HashMap<String, String>> finalArray = new HashMap<String, HashMap<String, String>>();

String[] langArray = {"en","fr","de","no","es"};

//Initialize each language key ahead of time
for(String lang : langArray) { // foreach lang in langArray
  if (!finalArray.containsKey(lang)) {
    finalArray.put(lang, new HashMap<String, String>());
  }
}

//loop one - assign names
for(String lang : langArray) {
  String theName = lang + " name"; //go get the name from somewhere
  finalArray.get(lang).put("name", theName);
}

//loop two - assign description
for(String lang : langArray) {
  String theDesc = lang + " description"; //go get the description from somewhere
  finalArray.get(lang).put("desc", theDesc);
}

//loop three - assign keywords
for(String lang : langArray) {
  String theKeys = lang + " keywords"; //go get the keywords from somewhere
  finalArray.get(lang).put("keys", theKeys);
}

//display output
for(String lang : langArray) {
  System.out.println("LANGUAGE: " + lang);
  System.out.println(finalArray.get(lang).get("name"));
  System.out.println(finalArray.get(lang).get("desc"));
  System.out.println(finalArray.get(lang).get("keys"));
}

//example to retrieve/get values
String english_name = finalArray.get("en").get("name");
String french_desc = finalArray.get("fr").get("desc");

问题答案:
HashMap<String, HashMap<String, String>> myArray = new HashMap<String, HashMap<String, String>>();

if (!myArray.containsKey("en")) {
    myArray.put("en", new HashMap<String, String>());
}
myArray.get("en").put("name", "english name");

在Java中,必须明确说明何时创建对象。在这种情况下,首先我们检查是否在键“
en”下的HashMap外部存储了一个对象HashMap。如果没有,我们将创建一个空的。

现在要添加一个新值,我们必须首先从外部获取它HashMap,然后再添加新值。



 类似资料:
  • 问题内容: 有以下查询结果:(key1和key2可以是任何文本) 我希望将数据存储在网格(可能是数组)中,像这样 循环 所有记录: 在PHP中,使用关联数组非常容易: 但是在JavaScript这样的关联数组中不起作用。阅读大量教程之后,我所能得到的就是: 但不起作用。我尝试了对象数组,但是对象属性不能是自由文本。我阅读教程的时间越长,我就越困惑。 任何想法都欢迎:) 问题答案: 只需使用常规的J

  • 问题内容: 我有一个多维数组$ md_array,我想将更多元素添加到子数组recipe_type和美食中,这些美食来自从表中读取数据的循环。 在循环中,我为每行创建一个新表$ newdata: 然后,我需要将$ newdata数组追加到以下多维数组: 使用array_push将新元素(数组)添加到recipe_type数组的语法是什么?我永远无法绕过多维数组,我有点困惑。 问题答案: 如果要在关

  • 问题内容: 谁能给我一个带有多维输入数组的JavaScript示例/示例?希望您能有所帮助,因为我还是JavaScript的新手。 就像输入2行2列时一样,输出将是2行输入和2列输入。 像这样: 问题答案: http://jsfiddle.net/z4Un3/ 如果您想存储DOM元素,请执行以下操作: 在附加这些元素之前,无法确定上面的方法是否有用。以下可能是您正在寻找的更多内容: http://

  • 我有一个小程序,在2D数组中保存状态对和它们的首都。在此程序下面: 我需要用替换常规的二维数组。 我在stackoverflow上找到了一些线程,如何添加我想要的数组。以下是链接:如何在Java中创建二维ArrayList?以及如何声明2D字符串ArrayList?。但是这些讨论并没有解释如何在每个ArrayList中添加元素。我能做的最好的事情是创建新的ArrayList,然后添加一些元素,最后

  • 我有一个包含加密符号列表的数组,例如(因为有一千多个) 我需要创建一个多维数组,包含所有可能的组合,例如。 生成的数组不应该有重复的排列,如, 我真的不知道从哪里开始。我能得到的最接近的方法是用一些对构建一个数组(然后,不是写出来的,目标是逐渐搜索并添加缺少的组合): 任何帮助都将不胜感激。我的项目的其余部分是用Python 3.8编写的。