从方法转换Lambda表达式

时间:2018-04-10 13:06:19

标签: java lambda

我试图编写一个过滤方法和一种使用该过滤方法的方法,同时也考虑到了这一点。此类表示文本消息数据库。我想在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;

1 个答案:

答案 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())
相关问题