Java+;MongoDB:更新文档数量中的字段

Java+;MongoDB:更新文档数量中的字段,java,mongodb,Java,Mongodb,我试图立即更新文档数量中的字段,我想修改 “download=0”其中列表中有“md5”。当我运行代码时,它会抛出一个异常: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(Unknown Source) 这就是我正在做的: //the list is an list of "md5" List<BasicDBObject> updateCon

我试图立即更新文档数量中的字段,我想修改
“download=0”
其中列表中有
“md5”
。当我运行代码时,它会抛出一个异常:

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(Unknown Source)
这就是我正在做的:

//the list is an list of "md5"

List<BasicDBObject> updateCondition=new ArrayList< BasicDBObject>(list.size());  
for(int i = 0 ; i < list.size(); i++) {
    updateCondition.get(i).put("md5", list.get(i));
    DBObject updatedValue=new BasicDBObject();  
    updatedValue.put("download", 0);   
    DBObject updateSetValue=new BasicDBObject("$set",updatedValue);               
    vt_col.update(updateCondition.get(i), updateSetValue);  
} 

我需要您的帮助,谢谢您的帮助。

调试将在这里对您有很大帮助,我不能100%准确地说,但我认为您的updateCondition可能是空的

您正在尝试访问updateCondition(0)。。。但您只需通过以下方式创建它:

new ArrayList< BasicDBObject>(list.size()); 
newarraylist(list.size());
引发异常的原因是列表中仍然没有任何对象,首先必须将列表复制到updateCondition列表


希望有帮助。

这个答案是正确的。为了详细说明发生这种情况的原因:构造函数
ArrayList(int initialCapacity)
不会创建包含
initialCapacity
项的列表,它会为
initialCapacity
项创建一个带有保留内存的空列表。Settng集合的保留容量是一种纯粹的性能优化,但不涉及其行为。
new ArrayList< BasicDBObject>(list.size());