ZKX's LAB

在编程中,迭代和循环得区别! 迭代循环删除元素

2020-09-30知识12

arraylist 为什么 删除元素时要使用迭代器而不能使用遍历

在编程中,迭代和循环得区别! 迭代循环删除元素

在编程中,迭代和循环得区别。 public interface Iterator对集合进行迭代的迭代器。迭代器代替了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同:1.迭代器允许调用方利用定义良好的语义在迭代期间从迭代器所指向的集合移除元素。2.方法名称得到了改进.简单来说.就是迭代器做了一层封装.让操作集合更加方便.以下两段源码可以看出区别:List<;String>;sl=new ArrayList();sl.add(\"aa\");sl.add(\"bb\");sl.add(\"cc\");sl.add(\"dd\");for(String s:sl){System.out.println(s);sl.remove(s);}在运行的过程中,会抛出 java.util.ConcurrentModificationException,也就是说,在循环的过程中,是不允许删除 Collaction 中的元素的。要在迭代的过程中,删除某些元素,则必须按照下面的写法:for(Iterator it=sl.iterator();it.hasNext();{System.out.println(it.next());it.remove();}

在编程中,迭代和循环得区别! 迭代循环删除元素

在for循环里遍历list,然后删除元素会怎样 从list中删除指定元素可以使用remove方法来实现:ArrayList al=new ArrayList();al.add(\"a\");al.add(\"b\");al.add(\"b\");al.add(\"c\");al.add(\"d\");for(int i=0;i();i+){if(al.get(i)=\"b\"){al.remove(i);i-;}}在代码中,删除元素后,需要把下标减一。这是因为在每次删除元素后,ArrayList会将后面部分的元素依次往上挪一个位置(就是copy),所以,下一个需要访问的下标还是当前下标,所以必须得减一才能把所有元素都遍历完。

在编程中,迭代和循环得区别! 迭代循环删除元素

存储过程集合循环删除,就像java中list中循环删除元素一样,知道删除完

C++:在遍历/循环中删除map元素, 如何避免iter 迭代器失效 如果你在不知情的情况下使用了失效的迭代器,后果是不可预料的。可能程序立即崩掉,也可能什么事都没有发生。崩掉了算你 幸运,因为你至少知道出了问题,不然有你受的。回到正题,我想说什么呢?比如:程序代码map theMap;add something to theMap.for(auto iter1=theMap.begin();iter1。theMap.end();iter1){if(iter1->;second=xxx){theMap.erase(iter1);1 erase the element?}} 看样子貌似非常正常的一 段代码。在一个map中寻找值为xxx的项并删除。但是实际上这个代码是完全错误的,会导致无法预料的结果。问题就在#1处。因 此就可以这样做(《C++Standard Library》上建议的正确做法):程序代码for(auto iter1=theMap.begin();iter1。theMap.end();{if(iter1->;second=xxx){theMap.erase(iter1+);1 }else{+iter1;}}

struts2迭代器标签删除循环中的元素java class B{String n1=\"bmw;String n2=\"保时捷;public static void main(String[]args){B b=new B();System.out.println(\"改名前\"+b.n1);System.out.println(\"改名后\"+b.n2);}}这么写没事但是这么写就是错误,说什么不能调用非静态变量,难道上面的对象就可以直接调用了?class B{String n1=\"bmw;String n2=\"保时捷;public static void main(String[]args){System.out.println(\"改名前\"+n1);System.out.println(\"改名后\"+n2);}}

为什么java不要在foreach循环里进行元素的remove/add操作 foreach循环是建立在迭代器的基础之上的,迭代器能够有效工作的前提是集合内的元素保持不变,既不能增加也不能删除,如果直接对集合进行增加和删除,会导致迭代器中的内容与集合的内容产生差异,从而导致错误发生。可以使用迭代器的remove,能够保证正常工作。如果存在疑问建议查看List类或者HashMap类的源码。

Python的for循环中要怎样修改迭代的元素 你没有给出完整的代码和结果,所以不太明白你的意思。如果你是想修改 list 的元素值,可以谷歌搜索“get index in iteratrion of list python”,然后第一个结果就是问题的答案,或者查找 python的官方参考手册查找函数:12coding:utf-8-*-a=[1,2,3,4,5]for index,value in enumerate(a):a[index]=2#根据具体的函数体修改value相应的值,这里把所有 a 的元素都变为了2print a

c++用迭代器删除重复的元素 for(vector:iterator it1=vect.begin();it1。vect.end()-1;it1+)/it1。vect.end()-1,因为内循环有删除情况,所以it1。vect.end()-1不可靠,改为it1()-1{for(vector:iterator it=it1+1;it。vect.end();it+){if(*it1=*it){it=vect.erase(it);这里重写了itcontinue;这个continue会跳到for括号里的it+,可能会越界}}}includeincludeusing namespace std;int main(){int a[11]={ 35,35,35,35,35,35,35,35,35,35,35 };vector<;int>;vect(a,a+11);for(vector<;int>;:iterator it1=vect.begin();it1()-1;it1+)/改成it1()-1,注意定义迭代器要加类型的{for(vector<;int>;:iterator it=it1+1;it。vect.end();{if(*it1=*it){it=vect.erase(it);continue;}it+;it+放这里}}return 0;}

为什么使用迭代器时可以用集合对象删除元素? 有问题,上知乎。知乎,可信赖的问答社区,以让每个人高效获得可信赖的解答为使命。知乎凭借认真、专业和友善的社区氛围,结构化、易获得的优质内容,基于问答的内容生产。

#迭代器#存储过程#for循环

随机阅读

qrcode
访问手机版