0

我有一个关于排序数组的问题。

我有一个这样的数组:

long[][] allDate = new long[lenght][2];

并且值是: allDate[][0]以毫秒为单位表示日期,并allDate[][1]在这种情况下表示值,例如它之前的日期价格

allDate[0][0] = 142142141
allDate[0][1] = 90

allDate[][0]从现在开始,日期的值总是在未来,我想做的是按时间顺序对这些日期进行排序。但问题是我想保持他们的价格,所以我可以将它添加到我的 Jfreechart 折线图中。

在这个循环中

    for (int i = 0; i < a7; i++) {
        int day = (int) (new Date().getTime() + allDate[i][0] / (1000 * 60 * 60 * 24));
        int month = (int) (new Date().getTime() + allDate[i][0] / (1000 * 60 * 60));
        int year = (int) (new Date().getTime() + allDate[i][0] / (1000 * 60));
        s1.add(new Day(day, month, year), (eWallet + allDate[i][1]));
    }

任何想法如何排序?

4

1 回答 1

4

并且值是: allDate[][0] 以毫秒为单位表示日期, allDate[][1] 表示在这种情况下的值,它是从之前的日期价格

所以我要做的第一件事就是避免将它们存储为二维数组。相反,存储一对值的一维集合(无论是数组还是列表):

PriceSnapshot[] prices = ...;

WherePriceSnapshot将由时间戳(无论是 a long、 a Date、 Joda TimeInstant等还是其他)和价格组成。

那时,您可以轻松编写 aComparer<PriceSnapshot>按时间进行比较,并使用它进行排序。当然你可以写 aComparer<long[]>代替,但这不会那么好。

(另请注意,在当前循环中,您将使用“当前时间”3 次,这意味着您最终可能会得到不同的日期。坏主意。拍摄“现在”的单个快照,然后重复使用它。)

于 2013-03-18T12:46:27.223 回答