亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從列表中刪除日期比較

從列表中刪除日期比較

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 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號