ネスターMilyaev:
私のような、Java Beanを持っています
class EmployeeContract {
Long id;
Date date;
getter/setter
}
私たちはidでなく、のような別の日付、との重複を持っているこれらの長いリストを持っている場合:
1, 2015/07/07
1, 2018/07/08
2, 2015/07/08
2, 2018/07/09
どのように私は、次のような最新の日付のエントリだけが、維持するようなリストを減らすことができます。
1, 2018/07/08
2, 2018/07/09
?好ましくはJavaの8を使用して...
私のような何かを開始しました:
contract.stream()
.collect(Collectors.groupingBy(EmployeeContract::getId, Collectors.mapping(EmployeeContract::getId, Collectors.toList())))
.entrySet().stream().findFirst();
それは私に、個々のグループ内のマッピングを提供しますが、私は結果リストにそれを収集する方法のようにこだわっている - 私の流れが強すぎる、私は怖いではありません...
ユージン:
まあ、私は答えの形でここに私のコメントを置くつもりです。
yourList.stream()
.collect(Collectors.toMap(
EmployeeContract::getId,
Function.identity(),
BinaryOperator.maxBy(Comparator.comparing(EmployeeContract::getDate)))
)
.values();
これはあなたを与えるだろうCollection
の代わりにしList
、あなたが本当にこの心配している場合、。