Java 按状态将时间戳组织为持续时间

Java 按状态将时间戳组织为持续时间,java,postgresql,Java,Postgresql,我正在开发一个简单的时间跟踪应用程序,并试图找出将常规时间预订组织为持续时间的最有效方法。 我有一个Timestamp类的对象列表,如下所示: public class Timestamp { int status; Date date; } 状态转换为: private static final int OUT = 0; private static final int IN = 1; private static final int BREAK = 2; 从状态为1的时间

我正在开发一个简单的时间跟踪应用程序,并试图找出将常规时间预订组织为持续时间的最有效方法。 我有一个Timestamp类的对象列表,如下所示:

public class Timestamp {
    int status;
    Date date;
}
状态转换为:

private static final int OUT = 0;
private static final int IN = 1;
private static final int BREAK = 2;
从状态为1的时间戳到状态为0或2的时间戳计算持续时间。 我的考虑是按日期对列表排序,然后删除所有无用的时间戳,即所有状态重复的时间戳。有什么想法吗

更新:

为了更清楚地表达我的意思……首先,我将描述我的应用程序中的事件顺序:
1.用户打卡进入/退出/休息。
2.在我的数据库中创建了一个条目。创建条目的表中有一列表示用户打卡时的日期时间和一列“状态”。在“状态”列中,我用一个数字值存储用户是打卡、开始休息还是打卡下班,在本例中,0表示外出,1表示进入,2表示休息。
3.现在,我的应用程序应该计算用户每天工作的时间和休息时间。为了简单起见,工作时间是从一天中的第一个“打卡”到下一个“打卡”或从“打卡”到“休息”计算的。中断时间从第一次“中断”到下一次“时钟输入”计算。
4.然后,结果将保存在另一个表中,在该表中,我按天保存工作持续时间和休息持续时间

正如我已经写过的,我的看法是:
-从表中获取所有数据。
-为每一行创建我的Timestamp类的实例,并将它们放入列表中。
-删除我不用于计算的所有条目,例如“时钟输入”时间戳和“时钟输出”时间戳之间的重复“时钟输入”。
-遍历列表,查找相关的时间戳,从列表中删除它们并创建持续时间。
-汇总所有持续时间,直到处理完一整天。
-在另一个列表中更改当天,直到处理完所有数据。
-将更改的持续时间数据插入相应的表中


正如您可能想象的那样,数据量可能会变得非常巨大,因此我正在寻找一种快速有效的方法来实现我的目标。希望这能澄清一些问题。

如果所有时间戳都指向同一件事(操作、系统等),那么这听起来是合理的。有什么问题吗?考虑制作<代码>时间戳< /代码> S可相互比较(即,<代码>时间戳实现可比的< /代码>),以便您可以使用有序集合和排序方法,如使用<代码>可比< /COD> >。请更新您的问题并提供更多的细节。现在还不清楚您有什么输入参数,以及您等待的结果。@Dmitri我更新了我的问题,希望这能澄清一些事情。