假设我们创建了一个重复某种数据类型的proto文件,例如
message DocList{
repeated string docId = 1;
}
现在我们按以下方式将对象插入到它的构建器对象中:
DocList.Builder docList = new DocList.newBuilder()
docList.addAllDocId(docIDlist); // docIDList is ArrayList<String>
现在我们执行以下get操作来检索索引处的对象。
docList.getDocId(i); // Some index i
我想知道这个get操作是O(1)还是O(n)?
答案 0 :(得分:1)
Protobuf ListValue 由 java.util.ArrayList
支持if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
values_ = new java.util.ArrayList<com.google.protobuf.Value>();
mutable_bitField0_ |= 0x00000001;
}
因此 get()
为O(1)@SuppressWarnings("unchecked")
E elementData(int index) {
return (E) elementData[index];
}