Bill
の2つのリストがあり、請求書を作成した月を表すdate
フィールドがあります。 bills
リストからoldBills
にオブジェクトを追加する必要があります。 oldBills
リストに同じデータの請求書がない場合は、請求書を追加する必要があります。2つのリストの比較とマージを最適化
私はそれをこのように実装:
outer:
for (Bill bill : bills) {
Date billDate = bill.getDate();
for (Bill bill1 : oldBills) {
Date bill1Date = bill1.getDate();
if (Objects.equals(billDate, bill1Date)) {
continue outer;
}
}
newBills.add(bill);
}
oldBills.addAll(newBills);
を私はこれが最善の方法ではないと思われます。
このアルゴリズムを最適化する方法はありますか?
PS:Javaの7
請求書をユニークにするには? –
日付は日付オブジェクトで表すことができます。これは、日付がミリ秒間異なっている可能性があることを意味します。 –
カレンダーの日付で衝突を調べる場合は、['LocalDate']のオブジェクトを使用します( https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html)古いjava.util.Dateではなく、Java 8以降に組み込まれたjava.timeフレームワークのクラスクラス。上記の暦月ごとに比較する場合は、['YearMonth'](https://docs.oracle.com/javase/8/docs/api/java/time/YearMonth.html)クラスを使用してください。 –