链表循环使用(for int i=0;i<list.size;i++)为什么会慢
1.首先链表结构决定 priperAdddress data nextAddress
for(int i=0;i<list.size;i++)
{
。。。。。
}
链表结构这样循环每次都是从表头取数据,单个数据每次都是走的都是全链表查询
通用的方法是使用Iterator 或ListIterator迭代器进行循环
好处是:迭代器中存储了每次链表遍历当前的指针位置
Iterator iterator = list.Iterator;
while(itherator.hasNext()){
Object obj = iterator.next();
}
ListIterator与Iterator的区别:
1.listIterator允许链表向前循环,iterator只允许向后循环
AIP中方法说明:
listIterator:hasNext() hasPrevious() next()previous() previousIndex() remove()set(E e)
Iteraotor:hasNext()next() remove()
关于 迭代器的详细使用大家可以百度一下或看一下API
当然for(int i=0;i<list.size;i++)用于数组及ArrayList的遍历循环查询是比较快的,因为都是数组结构
相关推荐
i < list.get(0).size(); i++) { int peopleCount = 0; int count = 0; for (int c = 0; c < list.size(); c++) { if (((c == 1 || c == 3 || c == 4) && list.get(c).get(6) != 0) || ((c == 2 || c == 0) &&...
删除List中的重复值 ... for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j > i; j -- ) { if (list.get(j).equals(list.get(i))) { list.remove(j); } } }
for (int i = 0; i < n; i++) { do { // 生成随机数 num = rand.nextInt(n); } while (bool[num]); bool[num] = true; list.add(num); } System.out.println(list); } } ``` #### 方法二:使用数组和双重...
int ListSize(LinearList &L) { return L.size; } // 检查线性表是否为空 bool ListEmpty(LinearList &L) { return L.size == 0; } // 检查线性表是否为满 bool ListFull(LinearList &L) { return L.size == L....
for(int i=0;i<base.length();i++){ List<String> temp = list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i)); result.addAll(temp); } return result; } } ++++++++++++...
for (int i = 0; i < 20; i++) { System.out.print(a + " "); int temp = a; a = b; b = temp + b; } } } ``` ### 6. 素数判断 **标题描述:** 判断101到200之间哪些数是素数。 **代码实现:** ```java ...
if (ch[i] >= '0' && ch[i] <= '9') { digital++; } else if ((ch[i] >= 'A' && ch[i] <= 'Z') || (ch[i] >= 'a' && ch[i] <= 'z')) { character++; } else if (ch[i] == ' ') { blank++; } else { other++;...
for (int i = 0; i < v.size(); i++) if (v[i] == x) return i; return ret; } int main() { int n, m, p, q; cin >> n >> m; for (int i = 1; i <= n; i++) v.push_back(i); for (int i = 1; i <= m;...
int listsize; // 最大容量 } SqList; ``` 这里`ElemType`被定义为`int`类型,表示数组中的元素类型为整型。 ### 二、顺序表的基本操作 #### 2.1 初始化 初始化操作用于创建一个新的空顺序表。文档中的`InitList...
i <= n; i++) { BigInteger gcd = result.gcd(BigInteger.valueOf(i)); result = result.multiply(BigInteger.valueOf(i)).divide(gcd); } System.out.println(result); } } ``` ### 2. 漏掉的账目明细 ####...
if (i <= 0 || i > L.length) return ERROR; e = L.elem[i - 1]; return OK; } ``` #### 9. 查找指定元素的位置 `LocateElem` 查找指定元素在列表中的位置。 ```c Status LocateElem(SqList L, ElemType e, ...
for (int i = 0; i < array.length; i++) { boolean isUnique = true; for (int j = 0; j < array.length; j++) { if (i != j && array[i] == array[j]) { isUnique = false; break; } } if (isUnique) { ...
for (int i = 0; i < n / groupSize; i++) { System.out.print(groupSize + " "); } ``` **题目37:** - **题目描述**:寻找一个三位数,其平方的最后三位与该数相同。 - **解题思路**:遍历所有三位数(100至...
i <= dataList.size(); i++) { Row dataRow = sheet.createRow(i); Object[] data = dataList.get(i - 1); for (int j = 0; j < data.length; j++) { Cell cell = dataRow.createCell(j); cell.setCellValue...
for(int i=0;i<list.size();i++){ // 用循环不断进行筛选文件和目录 if(list.get(i).isDirectory()){ blank = blanks.get(i)+2; File childFile[] = list.get(i).listFiles(); for(int j=0;j<childFile.length...
i < list.size(); i++) { boolean select = false; for (int j = 0; j < selected.length; j++) { if (list.get(i).equals(selected[j])) { System.out.println(selected[j] + "被选中"); select = true; } ...
for (int i = 0, len = list.size(); i < len; ) { if (list.get(i).equals(XXX)) { list.remove(i); len--; } else { i++; } } ``` **解析:** - 使用两个控制变量:`i`作为索引,`len`作为长度。 - 每次...
i < list.size(); i++) { String data = list.get(i); // ... } ``` 这种方式没有使用迭代器,内部不锁定数据,因此在单线程环境下通常效率最高。然而,在多线程环境中,如果需要考虑并发操作,必须自行处理同步...
for (int i = 0; i < point1.length; i++) { distance += Math.pow(point1[i] - point2[i], 2); } return Math.sqrt(distance); } ``` 4. **初始化质心**: 可以随机选择k个数据点作为初始质心,或者使用...
for (int i = 0; i < title.length; i++) { Label label = new Label(i, 0, title[i]); // 设置每个列的标题 sheet.addCell(label); } ``` - **添加数据**: ```java // 假设JTable中的数据已经获取并存储在...