以下课程将比较常规的每日常规时间,并在此后返回最接近的时间。 (使用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;
}
答案 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
对列表进行排序。