经常我们要删除集合中的某些元素。有些可能会这么写。
public void operate(List list){
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
list.remove(str);
}
}
}
这种写法一运行就会报如下异常:
Exception in thread "main" java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
因为list在循环中的时候是不可以删除它的元素的。后来我是这样做的,一种很笨的方法,思路是这样的:创建一个List专门存放要被删除的元素,循环过后,用List.removeAll方法把元素删除。代码如下:
public void operate(List list){
List removeList= new ArrayList();
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
removeList.add(str);
}
}
list.removeAll(removeList);
}
这样也确实可以解决问题了,但是方法实在太笨重,其实可以有更简单的更高效的方法,就是用Iterator.remove方法,如下:
for (Iterator it = list.iterator(); it.hasNext();) {
String str = (String)it.next();
if (str.equals("chengang")){
it.remove();
}
}
所以,你对Java的基础知识了解越多,代码就会写得越简洁。相反如果你的代码特别复杂,则方法或设计一定有问题。
List集合可以向Iterator集合转换:Iterator it = list.listIterator();
分享到:
相关推荐
为了让更多的Java程序员找到自己理想的工作,这份面试题就是你就是你进入公司最好的敲门砖,望大家多看,小弟刚刚就业,愿与大家分享更多的面试经验。。。。。
Java基础,你想不到的知识,JVM等,java基础 java细节
java程序员必看的文档,对于巩固java基础、提升技术能力的人来说绝对是最好的选择。
Java 基础知识点汇总 以下是 Java 基础知识点汇总的详细说明: ### 1. 面向对象的特征 面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它强调使用对象和类来组织和结构化代码。面向对象编程的...
java概括 ,Java常用的转义字符 注释类型,变量, Java数据类型 ,运算符 程序流程控制介绍(分支 循环) , 数组 里面包含理论概念 语句 细节及执行流程图 里面内容是通过我在it培训机构及在B站看韩顺平老师的课件...
JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...
Java语言基础,老师课件,有些细节可以看看
毕向东_Java基础课堂笔记详细整理版不错过任何一个细节
这个是corejava的一些基础知识。有的时候细节很重要,会解决你很多知识的盲区。
封装 :隐藏内部的实现细节,对外提供公共的接口 123456789101112131415161718192021222324252627282930313233343536373839 继承 继承:extends 拓展和延伸 子类对父类的拓展和延伸 public Person(){ ...
1.Java类的继承 2.方法的重写、覆盖 3.多态性及其应用 4.成员访问控制 5.对象的创建和初始化细节 6.几种常用的Java类
Java开发者要了解的基础知识,以及一些细节。
抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面, 一是过程抽象,二是数据抽象。 B.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述...
抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性...
适合一些卖课程或者有学习过Java的人选。里面是Java一开始需要掌握的一些代码知识和常识,一些基础知识的笔记,Java代码的基本运用和代码里需要掌握的一些细节。
Java基础精品课10-封装和继承录屏6.继承的语法细节.mp4
java基础知识最全面、最细节的总结,对于初学者很好用
计算机后端-Java-Java核心基础-第13章 面向对象05 10. 方法重写的细节.avi
面向对象编程的基础 要了解面向对象编程(OOP)的基本概念,需要理解 OOP 的三个主要概念,它们撑起 了整个 OOP 的框架。这三个概念是:封装、继承性和多态性。除此以外,还需了解对象、 类、消息、接口、及抽象等...