により、最新の三つの値を取得する:こんにちは、私は次のシナリオ持つ日付
final List<FirstDO> firstList;
final List<SecondDO> secondList;
DOさん(FirstDO、SecondDO)の両方がStringフィールドと日付フィールドを含み、他の :
を、私は2つのリストを持っています互いに異なるフィールドを有する。我々は、これらの値を持っていると仮定しましょう :
最初のリストは、これらの値を2 FirstD0-のオブジェクトが含まれています
First Object:
1. String field = "test"
2. Date field = 01.10.2017.
.....
Second Object:
1. String field = "test2"
2. Date field = 05.10.2017.
.....
第二のリストは、これらの値を2 SecondDO-のオブジェクトが含まれています
First Object:
1. String field = "test3"
2. Date field = 06.10.2017.
.....
Second Object:
1. String field = "test"
2. Date field = 07.10.2017.
.....
Third Object:
1. String field = "test4"
2. Date field = 02.10.2017.
.....
今私は、両方のリストを繰り返し、両方のリストから最新の3つのフィールド値を日付(降順)でソートする必要があります。つまり、これらはtest、test2、およびtest3になります。 2番目のリストでは、日付フィールド(07.10.2017)が "test4"(02.10.2017)よりも大きいので、 "test"を取る必要があることに気付いたかもしれません。
だから、私はいつも最大3つのフィールド値を日付(降順)でソートする必要があります。言い換えれば、私が両方のリストを結合するならば、私は最新の3つの値を取る必要があります。
私はこのようなTreeMapのを使用しようとしました:
final Map<Date, String> myTreeMap= new TreeMap<Date, String>();
そしてただ、両方のリストを反復処理し、このマップに挿入し、日付が比較可能なインタフェースを実装しているので、それは、自動的に日付順によって必要がありますただし、同じ日付の値を置くと上書きされます。マップには重複キーがありません。この問題を解決するにはどうすればよいのか分かりません。
「Date」クラスは** legacy ** nowですので、もう使用しないでください。代わりに、 'java.time'パッケージ内にある新しいAPIを使用してください。 – Zabuza
'Date'クラスは、古くなった厄介な古い日時クラスの一部で、java.timeクラスに取って代わりました。時間帯のない日付のみの値の場合は、 'LocalDate'クラスを使用します。 –