列表大小()

时间:2017-06-14 10:16:43

标签: java android arraylist

我正在尝试对主线程中列表的每个值进行一些计算,如下所示

for (int i = 0; i < list.size(); i++) {
                //Do some task
            }

Bur我在list.size()上得到了ConcurrentModificationException。

这是简单的java.util.List

Caused by: java.util.ConcurrentModificationException
                                                                        at java.util.AbstractList$SubAbstractList.size(AbstractList.java:360)
                                                                        at java.util.Collections$SynchronizedCollection.size(Collections.java:440)

如何解决这个问题?

完整代码:

private List<Double> computeValue(@NonNull List<Double> list1, List<Double> list2) {
        List<Double> computedList = new ArrayList<>();
            for (int i = 0; i < list1.size(); i++) {
                computedList.add(-((list1.get(i) + list2.get(i)) / 2));
            }
        return computedList;
    }

2 个答案:

答案 0 :(得分:0)

使用ListIterator解决ConcurrentModificationException。在ListIterator中,您可以在迭代时添加。

例如:

  List<Double> list = new ArrayList<>();
  list.add(2d);
  list.add(3d);
  list.add(4d);
  ListIterator iterator = list.listIterator();
  while (iterator.hasNext()){
     double val = (double) iterator.next();
     iterator.add(val + val/2);
  }
  System.out.println(list);

Out put

 [2.0, 3.0, 3.0, 4.5, 4.0, 6.0]

答案 1 :(得分:0)

我不确定是什么问题,但是通过检查for循环之外的大小来解决它。无论如何,谢谢你的回复

int listSize = list.size();     
for (int i = 0; i < listSize; i++) {
    //Do some task
}