如何避免重复代码初始化哈希映射的哈希映射?
每个客户都有一个ID,以及许多带有日期的发票,按id存储为客户的哈希图,按日期存储为发票的哈希图:
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”添加数据。因此,它似乎没有多大帮助。