`

for(int i=0;i<list.size;i++) 循环为什么慢

阅读更多

链表循环使用(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的遍历循环查询是比较快的,因为都是数组结构

分享到:
评论

相关推荐

    第三届蓝桥杯java决赛试题答案

    i &lt; list.get(0).size(); i++) { int peopleCount = 0; int count = 0; for (int c = 0; c &lt; list.size(); c++) { if (((c == 1 || c == 3 || c == 4) && list.get(c).get(6) != 0) || ((c == 2 || c == 0) &&...

    删除List中的重复值

    删除List中的重复值 ... for ( int i = 0 ; i &lt; list.size() - 1 ; i ++ ) { for ( int j = list.size() - 1 ; j &gt; i; j -- ) { if (list.get(j).equals(list.get(i))) { list.remove(j); } } }

    生成不重复随机数的算法

    for (int i = 0; i &lt; n; i++) { do { // 生成随机数 num = rand.nextInt(n); } while (bool[num]); bool[num] = true; list.add(num); } System.out.println(list); } } ``` #### 方法二:使用数组和双重...

    清华大学数据结构上机考试试题(C++语言版)

    int ListSize(LinearList &L) { return L.size; } // 检查线性表是否为空 bool ListEmpty(LinearList &L) { return L.size == 0; } // 检查线性表是否为满 bool ListFull(LinearList &L) { return L.size == L....

    最新JAVA编程题全集_50题及答案

    for(int i=0;i&lt;base.length();i++){ List&lt;String&gt; temp = list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i)); result.addAll(temp); } return result; } } ++++++++++++...

    java练习实例 实训

    for (int i = 0; i &lt; 20; i++) { System.out.print(a + " "); int temp = a; a = b; b = temp + b; } } } ``` ### 6. 素数判断 **标题描述:** 判断101到200之间哪些数是素数。 **代码实现:** ```java ...

    JAVA实验_题目5.pdf

    if (ch[i] &gt;= '0' && ch[i] &lt;= '9') { digital++; } else if ((ch[i] &gt;= 'A' && ch[i] &lt;= 'Z') || (ch[i] &gt;= 'a' && ch[i] &lt;= 'z')) { character++; } else if (ch[i] == ' ') { blank++; } else { other++;...

    CCF CSP 2017.03 第10次题目答案代码.docx

    for (int i = 0; i &lt; v.size(); i++) if (v[i] == x) return i; return ret; } int main() { int n, m, p, q; cin &gt;&gt; n &gt;&gt; m; for (int i = 1; i &lt;= n; i++) v.push_back(i); for (int i = 1; i &lt;= m;...

    数据结构--顺序表的基本操作(C语言实现).docx

    int listsize; // 最大容量 } SqList; ``` 这里`ElemType`被定义为`int`类型,表示数组中的元素类型为整型。 ### 二、顺序表的基本操作 #### 2.1 初始化 初始化操作用于创建一个新的空顺序表。文档中的`InitList...

    算法集训之编程大题集二(Java).pdf

    i &lt;= n; i++) { BigInteger gcd = result.gcd(BigInteger.valueOf(i)); result = result.multiply(BigInteger.valueOf(i)).divide(gcd); } System.out.println(result); } } ``` ### 2. 漏掉的账目明细 ####...

    线性表基本操作函数定义

    if (i &lt;= 0 || i &gt; L.length) return ERROR; e = L.elem[i - 1]; return OK; } ``` #### 9. 查找指定元素的位置 `LocateElem` 查找指定元素在列表中的位置。 ```c Status LocateElem(SqList L, ElemType e, ...

    Java数组去重 集合List去重的常用方法总结

    for (int i = 0; i &lt; array.length; i++) { boolean isUnique = true; for (int j = 0; j &lt; array.length; j++) { if (i != j && array[i] == array[j]) { isUnique = false; break; } } if (isUnique) { ...

    2010年蓝点决赛题+编程练习题(java)

    for (int i = 0; i &lt; n / groupSize; i++) { System.out.print(groupSize + " "); } ``` **题目37:** - **题目描述**:寻找一个三位数,其平方的最后三位与该数相同。 - **解题思路**:遍历所有三位数(100至...

    java 处理Excel 带 List

    i &lt;= dataList.size(); i++) { Row dataRow = sheet.createRow(i); Object[] data = dataList.get(i - 1); for (int j = 0; j &lt; data.length; j++) { Cell cell = dataRow.createCell(j); cell.setCellValue...

    计科javaexp6.doc

    for(int i=0;i&lt;list.size();i++){ // 用循环不断进行筛选文件和目录 if(list.get(i).isDirectory()){ blank = blanks.get(i)+2; File childFile[] = list.get(i).listFiles(); for(int j=0;j&lt;childFile.length...

    checkBox分别处理选中与不选中

    i &lt; list.size(); i++) { boolean select = false; for (int j = 0; j &lt; selected.length; j++) { if (list.get(i).equals(selected[j])) { System.out.println(selected[j] + "被选中"); select = true; } ...

    java集合类arraylist循环中删除特定元素的方法.docx

    for (int i = 0, len = list.size(); i &lt; len; ) { if (list.get(i).equals(XXX)) { list.remove(i); len--; } else { i++; } } ``` **解析:** - 使用两个控制变量:`i`作为索引,`len`作为长度。 - 每次...

    java遍历list集合3种方式和性能对比

    i &lt; list.size(); i++) { String data = list.get(i); // ... } ``` 这种方式没有使用迭代器,内部不锁定数据,因此在单线程环境下通常效率最高。然而,在多线程环境中,如果需要考虑并发操作,必须自行处理同步...

    Kmeans数据挖掘算法的实现(Java)

    for (int i = 0; i &lt; point1.length; i++) { distance += Math.pow(point1[i] - point2[i], 2); } return Math.sqrt(distance); } ``` 4. **初始化质心**: 可以随机选择k个数据点作为初始质心,或者使用...

    将JTable表的内容输出到Excel.txt

    for (int i = 0; i &lt; title.length; i++) { Label label = new Label(i, 0, title[i]); // 设置每个列的标题 sheet.addCell(label); } ``` - **添加数据**: ```java // 假设JTable中的数据已经获取并存储在...

Global site tag (gtag.js) - Google Analytics