gpt4 book ai didi

Java - 将 ArrayList 限制为仅 250 位数字

转载 作者:行者123 更新时间:2023-11-29 08:24:26 25 4
gpt4 key购买 nike

我有一个项目使用 ArrayList 来存储时间戳。使用此 ArrayList,我计算了车库内每辆车的平均 parking 时间。如果我运行项目 5 分钟,则该特定 ArrayList 已经加载了大约 10.000 个不同的时间戳。因此我想将整个 ArrayList 限制为只有 250 个以防止它过载。如果 ArrayList 是特定大小,则需要永远循环遍历它。它需要将新时间推送到 ArrayList 但删除旧时间,以便它仍然能够计算平均时间。我怎样才能做到这一点?

ArrayList

private ArrayList<Float> times = new ArrayList<Float>();

将时间添加到 ArrayList

private void carsPaying() {
// Let cars pay.
float total = 0.0f;
int i = 0;
while (paymentCarQueue.carsInQueue()>0 && i < Car.getPaymentSpeed()){
Car car = paymentCarQueue.removeCar();

if(currentDay != Time.getDay()) {
weeklyRevenue[Time.getDay()] = 0;
currentDay = Time.getDay();
}
// TODO Handle payment.
float payment = car.getTotalMinutes() * 0.042f;

weeklyRevenue[Time.getDay()] += payment;

revenue += payment;

carLeavesSpot(car);
numberOfParkedCars--;
numberOfCarsLeft++;

float timeInFloat = car.getTotalMinutes();

times.add(timeInFloat);

i++;
}

System.out.println(total);

}

计算平均时间

public BigDecimal getAverageTime() {

float totalTime = 0.0f;

for(Float time : times) {
totalTime += time;
}

float average = totalTime / times.size();
average = average / 60;
int hour = (int) average;
int minuut = (int) (60 * (average - hour));

float temp1 = (float) minuut / 100;
float temp2 = hour + temp1;

return round(temp2, 2);

}

提前致谢

最佳答案

如果元素的数量是固定的,你应该使用数组来代替。使用模运算符很容易覆盖最旧的元素,如下所示:

private static final int MAX_SIZE = 250;
private float[] times = new float[MAX_SIZE];

private void carsPaying() {
// ...
while (paymentCarQueue.carsInQueue() > 0 && i < Car.getPaymentSpeed()) {
// ...
times[i % MAX_SIZE] = timeInFloat;
i++;
}
}

关于Java - 将 ArrayList 限制为仅 250 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54485076/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com