链表循环使用(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的遍历循环查询是比较快的,因为都是数组结构
相关推荐
删除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<base.length();i++){ List<String> temp = list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i)); result.addAll(temp); } return result; } } ++++++++++++...
for (k=0,i=0;i<A.length;i++) { if(A.data[i]== ‘#’) k++; else A.data[i-k]= A.data[i]; } A.length= A.length-k; } 2. (共15分)已知带头结点的单循环链表L,编写算法实现删除其中所有值为e 的数据元素结点...
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++) { String data = list.get(i); // ... } ``` 这种方式没有使用迭代器,内部不锁定数据,因此在单线程环境下通常效率最高。然而,在多线程环境中,如果需要考虑并发操作,必须自行处理同步...
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 < point1.length; i++) { distance += Math.pow(point1[i] - point2[i], 2); } return Math.sqrt(distance); } ``` 4. **初始化质心**: 可以随机选择k个数据点作为初始质心,或者使用...
i < list.size(); i++) { String s= (String )list.get(i); System.out.println("s的值是:"+s);//循环读取每一行的值 String[] sArray =s.split(",");//用逗号分割每一行的属性 //给实体属性循环设值 ...
for (int i = 0; i < headerNames.length; i++) { Cell cell = headerRow.createCell(i); cell.setCellValue(headerNames[i]); } // 循环遍历数据,创建数据行 for (int i = 0; i < dataList.size(); i++) { ...
for (int i = 0; i < 1000000000; i++){ //运行老久,减少循环次数会快很多,只是精确度小些 pi += (fenZi/fenMu) ; fenZi *= -1.0; //每项分子的变化是+4,-4,+4,-4 .... fenMu += 2.0; //分母的变化是1,3...
for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - 1 - i; j++) { if (arr[j] > arr[j + 1]) { // 交换元素 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } }...
for (int i = 0; i < n / 2; i++) { for (int j = i; j < n - i - 1; j++) { int temp = matrix[i][j]; matrix[i][j] = matrix[n - j - 1][i]; matrix[n - j - 1][i] = matrix[n - i - 1][n - j - 1]; matrix...
for (int i = 0; i < ch.length; i++) { ret *= 26; ret += this.ch2int(ch[i]); } return ret; } static final Config config = new Config(); /** 关闭数据库连接 */ public void closeResource...
for (int i = 0; i < graph.nodes.size(); i++) { for (int j = 0; j < graph.nodes.size(); j++) { // 更新距离 if (distances[i][j] > distances[i][k] + distances[k][j]) { distances[i][j] = distances[i]...
for (int i = 0; i < primes.size(); i++) { int start = primes.get(i); for (int j = i + 1; j < primes.size(); j++) { int next = primes.get(j); // 检查运算关系,例如加法 if (checkPrimeRing(start, ...
i+count-1<=a.length-k;count++) //注意循环结束的条件 a.elem[i+count-1]=a.elem[i+count+k-1]; a.length-=k; return OK; }//DeleteK 2.11 Status Insert_SqList(SqList &va,int x)//把x插入递增有序表va中 { ...
i+count-1<=a.length-k;count++) //注意循环结束的条件 a.elem[i+count-1]=a.elem[i+count+k-1]; a.length-=k; return OK; }//DeleteK 2.11 Status Insert_SqList(SqList &va,int x)//把x插入递增有序表va中 { ...
for (int i = 0; i < numbers.size() - 1; i++) { for (int j = 0; j < numbers.size() - 1 - i; j++) { if (numbers.get(j) > numbers.get(j + 1)) { int temp = numbers.get(j); numbers.set(j, numbers.get...
for (int i = 0; i < banners.size(); i++) { ImageView dot = new ImageView(this); dot.setBackgroundResource(R.drawable.dot_inactive); indicatorLayout.addView(dot); } // 监听页面变化 viewPager....
for (int i = 0; i < 3; i++) { playerHands.add(new ArrayList<>()); } int cardIndex = 0; while (cardIndex < cards.size() - 8) { for (List<Card> hand : playerHands) { if (cardIndex < cards.size()...