Każdy klient ma identyfikator i wiele faktur, wraz z datami, przechowywanymi jako Hashmap klientów według identyfikatorów, skrótów faktur według dat:
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);
}
Wydaje się, że rozwiązaniem Java jest użycie getOrDefault
:
HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.getOrDefault(
id,
new HashMap<LocalDateTime, Invoice> (){{ put(date, invoice); }}
);
Ale jeśli get nie ma wartości zerowej, nadal chcę wykonać polecenie put (data, faktura), a także dodanie danych do „allInvoicesAllClients” jest nadal potrzebne. Więc to niewiele pomaga.