Java 方法的Lambda表达式转换

Java 方法的Lambda表达式转换,java,lambda,Java,Lambda,我正在尝试编写一个过滤方法和一个使用该过滤方法的方法,同时也考虑到了《泰晤士报》。此类表示文本消息数据库。我想在getMessagesBetween方法中使用lambda表达式实现接受谓词过滤器的filter方法。然而,我甚至不知道如何从这个开始。我知道lambda表达式的一般格式是 (param)->一些逻辑,但我不知道如何在这里实现它。 谢谢你能提供的帮助 public List<Message> filter(Predicate<Message> filter) {

我正在尝试编写一个过滤方法和一个使用该过滤方法的方法,同时也考虑到了《泰晤士报》。此类表示文本消息数据库。我想在getMessagesBetween方法中使用lambda表达式实现接受谓词过滤器的filter方法。然而,我甚至不知道如何从这个开始。我知道lambda表达式的一般格式是 (param)->一些逻辑,但我不知道如何在这里实现它。 谢谢你能提供的帮助

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;
公共列表筛选器(谓词筛选器){
ArrayList filteredList=新建ArrayList();
用于(消息:消息){
if(过滤测试(消息)){
filteredList.add(消息);
}
}
返回过滤器列表;
}
公共列表getMessagesBetween(LocalDateTime开始,LocalDateTime结束){
ArrayList messagesBetween=新建ArrayList();
用于(消息:消息){
LocalDateTime日期=message.getDate();
如果(日期==开始和日期==结束){
messagesBetween.add(message);
}
如果(日期.isAfter(开始)| |日期.isBefore(结束)){
messagesBetween.add(message);
}
}
中间返回消息;

您可以尝试以下方法:

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())
public boolean isBetween(消息消息、LocalDateTime开始、LocalDateTime结束){
LocalDateTime日期=message.getDate();
返回日期==开始| |日期==结束| |(date.isAfter(开始)和&date.isBefore(结束))
}
List filtereds=messages.stream().filter(message->isBetween(message,start,end)).collect(collector.toList())

@sgrillon请不要内联代码截图。@luk2302,不要放置外部link@sgrillon我必须让版主参与进来吗?停止内联代码的图像。@luk2302,我必须让版主参与进来吗?停止放置外部链接。