第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

一種更優(yōu)雅的方式來迭代列表以比較相鄰的兩個元素

一種更優(yōu)雅的方式來迭代列表以比較相鄰的兩個元素

慕娘9325324 2023-08-04 19:06:02
我有一個以這種方式工作的方法:以 3 個參數(shù)作為參數(shù) - 包含日期(按升序排序)、間隔單位和間隔值的列表檢查下一個元素是否不超過前一個日期(間隔)。換句話說,給定 30 分鐘的間隔,上一個 - 10:00,下一個 10:29 - 進一步迭代。如果下一個是 10:31 - 打破它并返回連續(xù)日期的計數(shù)器。它的代碼如下:public static void main(String[] args){    Date d1 = new Date();    Date d2 = addOrSubtractTimeUnitFromDate(d1, Calendar.MINUTE, 10, true);    Date d3 = addOrSubtractTimeUnitFromDate(d2, Calendar.MINUTE, 10, true);    Date d4 = addOrSubtractTimeUnitFromDate(d3, Calendar.MINUTE, 10, true);    Date d5 = addOrSubtractTimeUnitFromDate(d4, Calendar.MINUTE, 10, true);    Date d6 = addOrSubtractTimeUnitFromDate(d5, Calendar.MINUTE, 10, true);    List<Date> threeDates = new ArrayList<>();    threeDates.add(d1);    threeDates.add(d2);    threeDates.add(d3);    threeDates.add(d4);    threeDates.add(d5);    threeDates.add(d6);    System.out.println(returnDatesInARowCounter(threeDates, Calendar.MINUTE, 30));}private static int returnDatesInARowCounter(List<Date> allDates, int intervalBetween2DatesTimeUnit, int intervalValue){    int datesInARowCounter = allDates.size() > 0 ? 1 : 0; // esp. this line (in case allDates is empty)    Date lastDate = null;    Date nextDate;    Iterator<Date> iter = allDates.iterator();    while (iter.hasNext())    {        nextDate = iter.next();        if (lastDate != null) // both lastDate и nextDate are initialized now        {            if(isNextIncidentInIntervalWithLastOneOrNot(lastDate, nextDate, intervalBetween2DatesTimeUnit, intervalValue, true))            {                datesInARowCounter += 1;            }            else break;        }        lastDate = nextDate;    }    return datesInARowCounter;}public static Date addOrSubtractTimeUnitFromDate(Date dateToAddToOrSubtractFrom, int calendarTimeUnit, int value, boolean isAdd){    if(!isAdd)    {        value = -value;    }    Calendar cal = Calendar.getInstance();    cal.setTime(dateToAddToOrSubtractFrom);    cal.add(calendarTimeUnit, value);    return cal.getTime();}然而,該代碼對我來說看起來很奇怪。有什么方法可以讓它看起來更具可讀性嗎?
查看完整描述

1 回答

?
qq_花開花謝_0

TA貢獻1835條經(jīng)驗 獲得超7個贊

如果您使用的是 Java 8 或更高版本,則可以改用 java.time-API。它對“時間段”的內(nèi)置支持使實際實施變得更加簡單。


static int daysInARow(List<Instant> allInstants, Duration maxDifference) {

        int counter = allInstants.size() > 0 ? 1 : 0;

        Instant previous = allInstants.get(0);


        for (int i = 1; i < allInstants.size(); i++) {

            Instant current = allInstants.get(i);

            if (Duration.between(previous, current).compareTo(maxDifference) > 0)

                break;

            counter++;

            previous = current;

        }


        return counter;

    }

java.util.Date如果您在項目的其他部分使用,您可以Instant使用以下命令輕松地在 s之間進行轉(zhuǎn)換


Date#from(Instant)


Date#toInstant()


查看完整回答
反對 回復(fù) 2023-08-04
  • 1 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號