在迭代器中查找内容之间的持续时间

时间:2012-05-10 13:55:55

标签: java

代码:

    Iterator<String> termIncomeKeys = termIncome.keySet().iterator();
    while(termIncomeKeys.hasNext()){
        String month = termIncomeKeys.next();
        System.out.println(month);
    }

月份打印为

Jan(2012) - Jan(2012)

2月(2012年) - 3月(2012年)

Apr(2012) - May(2012)

Jun(2012) - Jun(2012)

Jul(2012) - Oct(2012)

我想要实现的是我想在每个条目之间按月打印持续时间。也就是说,第一次进入之间的持续时间是1个月,第二次之间的持续时间是2,依此类推。

2 个答案:

答案 0 :(得分:2)

我不知道是否有一个现成的类可以为你解析这些字符串,但逻辑很简单:

将三个字母的月份转换为数字(例如0-11),并将年份转换为数字。 差异为<year-diff>*12 + <month-diff>,其中<month-diff>可能为负数。

答案 1 :(得分:1)

假设同一年:

enum Month{
JAN(0),
FEB(1),
MAR(2),
APR(3),
....
DEC(11);

Month(int index){this.index = index;}
int index;

int getIndex() {return index;}
}

Iterator<String> termIncomeKeys = termIncome.keySet().iterator();
    while(termIncomeKeys.hasNext()){
        String month = termIncomeKeys.next();
        String str[] = month.split("-");
        String m0 = str[0], m1 = str[1];
        String y0 = mo.substr(m0.indexOf('(')+1, mo.lastIndexOf(')'));
        String y1 = m1.substr(m1.indexOf('(')+1, m1.lastIndexOf(')'));
        int yr0 = Integer.parseInt(yo), yr1 = Integer.parseInt(y1);
        m0 = m0.substr(0, mo.indexOf('(')).trim().toUpperCase();
        m1 = m1.substr(0, m1.indexOf('(')).trim(),toUpperCase();
        int duration =  yr1 *Month.valueOf(m1).getIndex() - yr0 *Month.valueOf(m0).getIndex();
    }