Это похоже на BiMap, но поскольку ваши отношения асимметричны (один int
относится к List
из String
с, тогда как String
может относиться только к одному int
), он не будет быть идеальным мтач.
Мне кажется, что вам нужны две карты: первая - ваша Map<Integer, List<String>>
, а вторая - Map<String, Integer>
. Вы, конечно, хотите заключить это в класс. Добавление новой строки:
- Если есть запись для
String
в Map<String, Integer>
,
- Получить
Integer
из этого списка.
- Используйте его, чтобы найти
List
из вашего Map<Integer, List<String>>
и удалить String
из него.
- Добавьте
String
к соответствующему List
в вашем Map<Integer, List<String>>
- Добавьте запись, сопоставляющую
String
с Integer
в Map<String, Integer>
.