为了账号安全,请及时绑定邮箱和手机立即绑定

从列表中删除日期比较

从列表中删除日期比较

HUX布斯 2022-06-30 10:29:28
我必须删除之前param.getFromDateTime和之后的所有对象params.getToDateTime。我是这样做的:for (ListIterator<Doc> iterator = doc.listIterator(); iterator.hasNext(); ) {    while(iterator.hasNext()){            if(param.getFromDateTime() != null              && doc.get(iterator.nextIndex()).getDate().before(params.getFromTime())) {                iterator.remove();            }            if(params.getToDateTime() != null              && doc.get(iterator.nextIndex()).getDate().after(params.getToDateTime())) {                iterator.remove();           }    }}我可以做得更好更清晰吗?
查看完整描述

3 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

您不需要两个循环,也不需要ListIterator。

请注意,这两个条件可能为真,但在任何情况下您都只想删除一个元素,因为调用两次remove()会引发异常。

您还可以直接date从迭代Doc对象中提取 ,使其更加清晰:


for (Iterator<Doc> iterator = doc.iterator(); iterator.hasNext(); ) {

      Date date = iterator.next().getDate();


      if( (param.getFromDateTime() != null && date.before(params.getFromTime())) 

          || (params.getToDateTime() != null && date.after(params.getToDateTime()))) {

        iterator.remove();

      }


}


查看完整回答
反对 回复 2022-06-30
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

List.removeIf如果您使用的是 Java 8,您可能需要使用:


List<Doc> docs = generateSomeValues(); // this ist just an imaginary filling of the list

// check if the params are not null and remove dates that are not in the given interval

docs.removeIf(doc ->

    (params.getFromTime() != null && doc.getDate().before(params.getFromTime()))

    || (params.getToDateTime() != null && doc.getDate().after(params.getToDateTime()))

);


查看完整回答
反对 回复 2022-06-30
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

带有流 api 的 java-8 近似:


List<Doc> docs = ...;

Stream<Doc> stream = docs.stream();

LocalDateTime fromDateTime = param.getFromDateTime();

LocalDateTime toDateTime = param.getToDateTime();

if (fromDateTime != null){

    stream = stream.filter(d -> !d.getDate().before(fromDateTime);

}

if (toDateTime != null){

    stream = stream.filter(d -> !d.getDate().after(toDateTime);

}

docs = stream.collect(Collectors.toList());


查看完整回答
反对 回复 2022-06-30
  • 3 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信