我有两个相同类型的列表:
final List<MyType> myCurrentList = ...
final List<MyType> listFromDatabase = ...
MyType
看起来像这样:
class MyType {
private DateTime startDate;
...
}
现在,我将获得MyType
的所有myCurrentList
个对象,其中startDate
中没有相同的listFromDatabase
条目。
答案 0 :(得分:2)
首先,您应该从数据库中收集所有startTime
,最好收集到Set
(因为您只关心那里的日期,而不是多次出现或他们的订单):< / p>
Set<DateTime> datesFromDatabase =
listFromDatabase.stream()
.map(MyTime::getStartTime)
.collect(Collectors.toSet());
然后,您可以流式传输当前列表,并仅保留数据库中没有日期的对象:
List<MyType> filteredList =
myCurrentList.stream()
.filter(x -> !datesFromDatabase.contains(x.getStartTime())
.collect(Collectors.toList());