エルナン・出演:
すべてのクライアントは、日付と、ID、および多くの請求書を持って、
日付別の請求書のhasmapの、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でない場合でも、まだもまだ必要とされている「allInvoicesAllClients」にデータを追加して、実行する(日付、請求書)を入れたいです。それは思われないように非常に役立ちます。
ジェイコブG.:
これはのための優秀なユースケースですMap#computeIfAbsent
。あなたのスニペットは、本質的に同等です:
allInvoicesAllClients.computeIfAbsent(id, key -> new HashMap<>()).put(date, invoice);
場合id
でキーとして存在していないallInvoicesAllClients
、それはからのマッピングを作成しますid
新しいのHashMap
と新しいを返しますHashMap
。場合id
キーとして存在している、それは既存戻りますHashMap
。