我试图编写一个过滤方法和一种使用该过滤方法的方法,同时也考虑到了这一点。此类表示文本消息数据库。我想在getMessagesBetween方法中使用lambda表达式实现我的过滤方法,该方法接受Predicate过滤器。但是,我不知道如何开始这个。我知道lambda表达式的一般格式是 (参数) - >一些逻辑,但我不知道如何在这里实现它。 感谢您提供的任何帮助。
public List<Message> filter(Predicate<Message> filter) {
ArrayList<Message> filteredList = new ArrayList<Message>();
for (Message message : messages) {
if(filter.test(message)) {
filteredList.add(message);
}
}
return filteredList;
}
public List<Message> getMessagesBetween(LocalDateTime start, LocalDateTime end) {
ArrayList<Message> messagesBetween = new ArrayList<Message>();
for (Message message : messages) {
LocalDateTime date = message.getDate();
if(date == start && date == end) {
messagesBetween.add(message);
}
if (date.isAfter(start) || date.isBefore(end)) {
messagesBetween.add(message);
}
}
return messagesBetween;
答案 0 :(得分:0)
您可以尝试这样的事情:
public boolean isBetween(Message message, LocalDateTime start, LocalDateTime end) {
LocalDateTime date = message.getDate();
return date == start || date == end || (date.isAfter(start) && date.isBefore(end))
}
List<Message> filtereds = messages.stream().filter(message -> isBetween(message,start,end)).collect(Collectors.toList())