在java中创建一个有2个键的索引和键的地图。

问题描述 投票:0回答:1

我有一个解决这个任务的问题。我必须从一个名为 "电话本 "的二维数组中创建一个地图。这是我目前的代码。

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个回答
0
投票

问题是你有很多电话簿的二维数组。为了保存它们,你必须有一个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");
© www.soinside.com 2019 - 2024. All rights reserved.