
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
在互联网的快速发展的今天,衍生出了很多与互联网有关的职业,其中程序员是很大的一部分,程序员是网络架构的主要工作人员,在社会的需求与高工资的刺激之下,很多人改行做程序员,而程序员主要做什么工作呢?当然是敲代码啦,而代码也就是不同的程序语言,利用这些语言来实现线上或线下的需求,例如java、C、python、php、web、ajax...等等,其中java在语言排行榜位于首列,是现如今应用范围最广泛的语言,而且也有很多语言也是通过java所衍生出来的,今天烟台电脑培训小编为大家带来,java程序员失误点!希望大家喜欢!
不能在foreach循环中修改list结构
解读
在jdk1.5版以上的foreach循环写法中,不能在循环代码中对正在循环的list的结构进行修改,即对list做add、remove等操作,如果做了这些操作,必须立即退出循环,否则会抛出异常。
示例
publicclass Test { publicstaticvoid main(String[] args) { List<Person> list = new ArrayList<Person>(); Person p1 = new Person("张三", 23); Person p2 = new Person("李四", 26); Person p3 = new Person("王五", 34); Person p4 = new Person("刘二", 15); Person p5 = new Person("朱六", 40); list.add(p1); list.add(p2); list.add(p3); list.add(p4); list.add(p5); for(Person p : list) { if("王五".equals(p.getName())) { list.remove(p); // 不能在此时删除对象。 }elseif("李四".equals(p.getName())) { list.remove(p); // 不能在此时删除对象。 } } System.out.println(list.size()); }} class Person{ private String name; privateintage; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } publicint getAge() { returnage; } publicvoid setAge(int age) { this.age = age; }}
解决上面代码红色部分的问题,可以通过循环取出对象,然后再循环结束后再进行删除。
List<Person> list = new ArrayList<Person>(); Person p1 = new Person(new String("张三"), 23); Person p2 = new Person(new String("李四"), 26); Person p3 = new Person(new String("王五"), 34); Person p4 = new Person(new String("刘二"), 15); Person p5 = new Person(new String("朱六"), 40); list.add(p1); list.add(p2); list.add(p3); list.add(p4); list.add(p5); Person wangwu = null; Person lisi = null; for(Person p : list) { if("王五".equals(p.getName())) { wangwu = p; } elseif("李四".equals(p.getName())) { lisi = p; } } list.remove(wangwu); list.remove(lisi);