У каждого клиента есть идентификатор и множество счетов с датами, которые хранятся в виде Hashmap клиентов по идентификатору, хэш-карты счетов по дате:
HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.get(id);
if(allInvoices!=null){
allInvoices.put(date, invoice); //<---REPEATED CODE
}else{
allInvoices = new HashMap<>();
allInvoices.put(date, invoice); //<---REPEATED CODE
allInvoicesAllClients.put(id, allInvoices);
}
Решением Java кажется использовать getOrDefault
:
HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.getOrDefault(
id,
new HashMap<LocalDateTime, Invoice> (){{ put(date, invoice); }}
);
Но если get не равен null, я по-прежнему хочу, чтобы put (дата, счет-фактура) выполнялся, а добавление данных в «allInvoicesAllClients» все еще необходимо. Так что, похоже, это не сильно помогает.