Java 如果相同,如何将请求的到达日期增加一毫秒

Java 如果相同,如何将请求的到达日期增加一毫秒,java,collections,puzzle,Java,Collections,Puzzle,我需要一个java中的java实用程序方法(对于我的应用程序,它在一秒钟内收到数千个请求),它具有以下特性。 请求的到达时间格式为(DD-MM-YYYY-HH:MM:SS)和bucketNumber(1-100) 我想,如果对于相同的bucketNumber,如果相同的到达时间来自于请求,那么它应该将请求的到达时间的值增加1毫秒 例如: 如果bucketNumber=1第1、2、3次请求的到达时间=01-01-2016-10:00:00(实际时间至milli 01-01-2016-10:00:0

我需要一个java中的java实用程序方法(对于我的应用程序,它在一秒钟内收到数千个请求),它具有以下特性。 请求的到达时间格式为(DD-MM-YYYY-HH:MM:SS)和bucketNumber(1-100)

我想,如果对于相同的bucketNumber,如果相同的到达时间来自于请求,那么它应该将请求的到达时间的值增加1毫秒

例如:

如果bucketNumber=1第1、2、3次请求的到达时间=01-01-2016-10:00:00(实际时间至milli 01-01-2016-10:00:00:000),第4次请求的到达时间为01-01-2016-10:00:01

因此,对于第二个请求,实用方法将返回01-01-2016-10:00:00(但实际上是01-01-2016-10:00:00:001)

对于第三个请求,实用方法将返回01-01-2016-10:00:00(但实际上是01-01-2016-10:00:00:002)

对于第4次请求,实用方法将仅返回01-01-2016-10:00:01,而不执行任何操作

我不想保留一个巨大的缓存来执行此操作(如果我使用set,那么我也希望继续删除冗余数据)

我应该使用以bucketNumber为键的全局地图和具有到达时间的集合吗?请帮助我实现这一点。此方法将在同步块内以线程安全的方式调用。

下面是我的解决方案。 我最后用了一张地图:

static Map<Integer, Date> arrivalTimeMap = new HashMap<>();
 static Date getIncrementedArrivalTimeIfEqual(Date arrivaltime,
            int bucketNumber) {

        Date lastArrivalTime =   arrivalTimeMap.put(bucketNumber, arrivaltime);
        if(lastArrivalTime != null && !lastArrivalTime.before(arrivaltime)){
            Date incrementedArrivalTime = incrementDateByMilliSeconds(
                    lastArrivalTime, 1); 
            arrivaltime = incrementedArrivalTime;

        }
        arrivalTimeMap.put(bucketNumber, arrivaltime);    
        return arrivaltime;
    }
staticmap-arrivalTimeMap=newhashmap();
静态日期getIncrementedArrivalTimeIfEqual(日期到达时间,
整数(bucketNumber){
Date lastArrivalTime=arrivalTimeMap.put(bucketNumber,arrivaltime);
if(lastArrivalTime!=null&!lastArrivalTime.before(arrivaltime)){
Date incrementedArrivalTime=IncrementDateBy毫秒(
最后到达时间,1);
到达时间=增加的到达时间;
}
arrivalTimeMap.put(bucketNumber,arrivaltime);
返回时间;
}
static Map<Integer, Date> arrivalTimeMap = new HashMap<>();
 static Date getIncrementedArrivalTimeIfEqual(Date arrivaltime,
            int bucketNumber) {

        Date lastArrivalTime =   arrivalTimeMap.put(bucketNumber, arrivaltime);
        if(lastArrivalTime != null && !lastArrivalTime.before(arrivaltime)){
            Date incrementedArrivalTime = incrementDateByMilliSeconds(
                    lastArrivalTime, 1); 
            arrivaltime = incrementedArrivalTime;

        }
        arrivalTimeMap.put(bucketNumber, arrivaltime);    
        return arrivaltime;
    }