Создание карты в java с 2 ключами для индекса и ключа - PullRequest
0 голосов
/ 29 апреля 2020

У меня проблема с решением этой задачи. Мне нужно создать карту из двухмерного массива с именем 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]);
}

Моя идея заключалась в том, чтобы вставить значение 2d-массива в карту с ключом namename, фамилией и phoneNumber. Я видел, что только последнее значение было присвоено ключу. Могу ли я назначить только одно значение одной клавише?

Вторая проблема заключается в том, что эти коды подтверждения должны работать:

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, поэтому я Предположим, мне нужно создать два ключа.

1 Ответ

0 голосов
/ 29 апреля 2020

Проблема в том, что у вас много телефонных книг в 2d массиве. И чтобы сохранить их, у вас должен быть массив 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");
...