我有对象,这是描述吗?
public MemberSkills(User user, BasicSkills skills, Short level, Short status, LocalDateTime confirmDate, String comment) {
this.user = user;
this.skills = skills;
this.level = level;
this.status = status;
this.confirmDate = confirmDate;
this.comment = comment;
}
我想从“ confirmDate”到“ confirmDate”过滤MemberSkill。 我正在使用Java-8和Java-springboot。 我尝试过,但是没有用。
LocalDateTime fromdate = LocalDateTime.parse(memberSkillRequest.getFromDate(), formatter);
LocalDateTime toDate = LocalDateTime.parse(memberSkillRequest.getToDate(), formatter);
List<MemberSkills> filterMemberSkill = memberSkills.stream().filter(memberSkill -> memberSkill.getConfirmDate().isBefore(fromdate)).collect(Collectors.toList());
List<MemberSkills> listMemberSkill = filterMemberSkill.stream().filter(memberSkill -> memberSkill.getConfirmDate().isAfter(toDate)).collect(Collectors.toList());
fromdate和todate从客户端发送出去。
答案 0 :(得分:1)
可能是因为您正在第一个过滤列表上运行第二个过滤,该列表已经排除了第二个过滤器中的所有内容。您应该可以执行以下操作-
List<MemberSkills> filterMemberSkill = memberSkills.stream()
.filter(memberSkill -> memberSkill.getConfirmDate().isBefore(toDate)
&& memberSkill.getConfirmDate().isAfter(fromDate))
.collect(Collectors.toList());
答案 1 :(得分:1)
我的猜测是您打算这样做的吗?
List<MemberSkills> listMemberSkill = memberSkills.stream()
.filter(memberSkill -> ! memberSkill.getConfirmDate().isBefore(fromdate))
.filter(memberSkill -> memberSkill.getConfirmDate().isBefore(toDate))
.collect(Collectors.toList());
这将为您提供MemberSkills
个对象,这些对象的确认日期在从日期到日期的半开间隔中。也就是说,日期必须从日期之前或之后,并且必须严格地在日期之前。这是定义时间间隔的常用方法。在代码中,“不早于”表示“在...上”。