【问题标题】:Creating a map in java with 2 keys for index and key在 java 中创建一个带有 2 个键的索引和键的映射
【发布时间】:2020-04-29 19:06:15
【问题描述】:

我在解决这个任务时遇到了问题。我必须从名为“phoneBook”的二维数组中创建一个地图。 到目前为止,这是我的代码:

Map<String, String> phoneBook2 = new HashMap<String, String>();
for (int i=0;i<phoneBook.length;i++){   
    phoneBook2.put("firstname",phoneBook[i][0]);
}
for (int i=0;i<phoneBook.length;i++){
    phoneBook2.put("surname",phoneBook[i][1]);
}
for (int i=0;i<phoneBook.length;i++){
    phoneBook2.put("phoneNumber",phoneBook[i][2]);
}

我的想法是将二维数组的值插入到带有名字、姓氏和电话号码键的地图中。我看到只有最后一个值被分配给键。我可以只为一个键分配一个值吗?

第二个问题是那些断言代码必须工作:

assert phoneBook2.get(0).get("firstname").equals(phoneBook[0][0]);
assert phoneBook2.get(0).get("surname").equals(phoneBook[0][1]);
assert phoneBook2.get(0).get("phoneNumber").equals(phoneBook[0][2]);
assert phoneBook2.size() == 100;

如您所见,调用了两个 get 函数,所以我想我必须创建两个键。

【问题讨论】:

    标签: java arrays maps 2d


    【解决方案1】:

    问题是你有很多二维数组的电话簿。要保存它们,您必须有一个 Map 数组:

    List<Map<String,String>> list = new List<>();
    for (int i=0;i<phoneBook.length;i++){ 
        Map<String, String> phoneBook2 = new HashMap<String, String>();  
        phoneBook2.put("firstname",phoneBook[i][0]);
        phoneBook2.put("surname",phoneBook[i][1]);
        phoneBook2.put("phoneNumber",phoneBook[i][2]);
        list.add(phoneBook2);
    }
    

    那么你可以:

    list.get(0).get("firstname");
    

    【讨论】:

      猜你喜欢
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2014-07-22
      • 2016-08-15
      相关资源
      最近更新 更多