我正在尋找一種很好的方法來構建一個有限的鏈接列表。如果鏈表是「滿」,則第一個元素將被刪除,新的元素將被添加。所以我總是有「最新」的「極限尺寸」元素。LinkedList中的併發修改異常
這是通過以下方式實現:
private int maxSize;
public LimitedLinkedList(int maxSize) {
this.maxSize = maxSize;
}
@Override
public synchronized boolean add(E object) {
boolean success = super.add(object);
while (this.size() >= maxSize) {
removeFirst();
}
return success;
}
現在我有以下問題:我需要計算鏈表的平均水平。這是我隨機得到併發修改異常或索引超出界限異常的時刻。我的平均方法:
public synchronized static double movingAverage(
LinkedList<AverageObject> valueList) {
if (valueList.isEmpty()) {
return 0;
}
double sum = 0;
int m = 0;
for (int i = 0; i < valueList.size(); i++) {
AverageObject object= valueList.get(i);
sum += object.value;
m++;
}
sum = (m != 0) ? sum/m : sum;
return sum;
}
你知道避免同時修改異常的好方法嗎?
我唯一的想法是,計算平均值,每次列表中被改變,所以我沒有來遍歷它,當我想擁有的平均水平。
非常感謝您!非常有用的回答:) – Frame91 2013-05-14 13:06:42