我正在寻找一种很好的方法来构建一个有限的链接列表。如果链表是“满”,则第一个元素将被删除,新的元素将被添加。所以我总是有“最新”的“极限尺寸”元素。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