从方法中获取两种不同类型的数据和结构

时间:2013-05-23 12:28:48

标签: java class methods jodatime

以下课程将比较常规的每日常规时间,并在此后返回最接近的时间。 (使用Joda-Time库)

public class TimeComparitor {

private List<LocalTime> targetTimes;

public TimeComparitor() {
    targetTimes = new ArrayList<LocalTime>();
}

public void addTargetTime(LocalTime target) {
    targetTimes.add(target);
}

public LocalTime getClosestFutureTarget(DateTime now) {
    LocalTime result = null;
    long resultOffset = Long.MAX_VALUE;
    ArrayList<String> bigger = new ArrayList<String>();

    for (LocalTime target : targetTimes) {
        DateTime todayTarget = target.toDateTimeToday();
        long differenceMillis = todayTarget.getMillis() - now.getMillis();
        if (differenceMillis > 0 && differenceMillis < resultOffset) {
            resultOffset = differenceMillis;
            result = target;
        } 
    }
    return result;
}

1. resultOffset返回特定时间的变化,现在,但该方法只返回最接近的时间,如何让resultOffset的价值超出类?我已经阅读了一些解决方案,用于从方法中获取两个值,但无法使其适应我的代码。

2.从现在开始,还需要有一个有序的列表,试过这个,但没有成功:

public LocalTime getClosestFutureTarget(DateTime now) {
    .
    .
    for (LocalTime target : targetTimes) {
                .
                .
                .
        } 
        //My attempt to Get List of Greater Time spots from now
        else if (differenceMillis > 0) {
        private ArrayList<String> sortBigger(LocalTime bigTarget){
                bigger.add(bigTarget.toString());
                Collections.sort(bigger);
            }
        }
    }
    return result;
}

1 个答案:

答案 0 :(得分:3)

要从方法返回多个对象,可以通过特殊类来完成。 类似于

的东西
public class TimeComparisonResult {

    private LocalTime result;
    private long resultOffset;

}

然后像这样更改getClosestFutureTarget。

public TimeComparisonResult getClosestFutureTarget(DateTime now) {

然后,您可以通过设置

对列表进行排序
public class LocalTime implements Comparable<LocalTime> {
    ...
    public int compareTo(LocalTime o){
         // compare "this" to o
    }
}

有关如何实现compareTo的详细信息,您可以阅读: http://docs.oracle.com/javase/6/docs/api/java/lang/Comparable.html

然后您只需使用Collections.sort对列表进行排序。