我有一个解决这个任务的问题。我必须从一个名为 "电话本 "的二维数组中创建一个地图。这是我目前的代码。
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函数被调用 所以我想我必须创建两个键。
问题是你有很多电话簿的二维数组。为了保存它们,你必须有一个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");