参考:http://blog.163.com/asd_wll/blog/static/210310402011627609901/
经常我们要删除集合中的某些元素。有些可能会这么写。
- 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
- t 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的基础知识了解越多,代码就会写得越简洁。相反如果你的代码特别复杂,则方法或设计一定有问题。
相关推荐
Java.util.ConcurrentModificationException 异常问题详解 ConcurrentModificationException 异常是 Java 中一个常见的异常,它发生在 Iterator 遍历集合时,集合同时被修改引起的异常。在 Java 中,集合类如 ...
在Java编程语言中,`java.util.InputMismatchException`是一个常见的运行时异常,它通常发生在尝试从数据源(如控制台、文件或数据库)读取数据时,遇到的数据类型与预期的不匹配。在这个特定的场景中,问题出在主线...
asm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util-3.2.jarasm-util...
asm-util-1.3.4.jar, asm-util-1.3.5.jar, asm-util-1.4.1.jar, asm-util-1.4.3.jar, asm-util-1.5.1.jar, asm-util-1.5.2.jar, asm-util-1.5.3.jar, asm-util-2.0.jar, asm-util-2.1.jar, asm-util-2.2.1-sources....
【标题】"ws-commons-util-1.0.2.zip_ws-comm-util.jar" 提供的是一个名为 ws-commons-util 的库的版本1.0.2,这个库经过压缩打包成ZIP格式,其中包含了 ws-comm-util.jar 文件。这个JAR文件是Java应用程序中常见的...
赠送jar包:jetty-util-9.4.43.v20210629.jar; 赠送原API文档:jetty-util-9.4.43.v20210629-javadoc.jar; 赠送源代码:jetty-util-9.4.43.v20210629-sources.jar; 赠送Maven依赖信息文件:jetty-util-9.4.43.v...
protobuf-java-util-3.1.0.jar下载,配合protobuf3.1.jar的util包
本文将详细解析标题和描述中提到的几个关键压缩包:`apr-1.4.6.tar.gz`、`apr-iconv-1.2.1.tar.gz` 和 `apr-util-1.4.1.tar.gz`,这些都是Apache安装的重要组成部分。 首先,`apr-1.4.6.tar.gz` 是APR库的主要版本...
在给定的文件信息中,我们看到两个重要的文件:"cors-filter-1.7.jar" 和 "java-util-1.9.1.jar",这些都是与Java相关的库文件,通常用于增强应用程序的功能。 首先,让我们来详细探讨"Cors Filter"。CORS(Cross-...
backport-util-concurrent.jarbackport-util-concurrent.jarbackport-util-concurrent.jar
赠送jar包:jetty-util-9.4.11.v20180605.jar; 赠送原API文档:jetty-util-9.4.11.v20180605-javadoc.jar; 赠送源代码:jetty-util-9.4.11.v20180605-sources.jar; 赠送Maven依赖信息文件:jetty-util-9.4.11.v...
赠送jar包:jetty-util-ajax-9.3.19.v20170502.jar; 赠送原API文档:jetty-util-ajax-9.3.19.v20170502-javadoc.jar; 赠送源代码:jetty-util-ajax-9.3.19.v20170502-sources.jar; 赠送Maven依赖信息文件:jetty-...
5. **日期与时间API**:`java.time`包替代了过时的`java.util.Date`和`java.util.Calendar`,提供了更直观、易用且功能丰富的日期和时间API,如`LocalDate`, `LocalTime`, `LocalDateTime`, `ZonedDateTime`等。...
4. **日期和时间API的改进**:JDK8引入了新的`java.time`包,替换原有的`java.util.Date`和`java.util.Calendar`,提供了更加友好和易用的日期和时间API。 5. **接口的默认方法**:接口现在可以定义默认方法,这些...
日期和时间API的改进则消除了对`java.util.Date`和`java.util.Calendar`类的依赖,提供了更直观的日期和时间操作。 在Linux环境中,JDK的使用还包括配置Tomcat、Eclipse等Java应用服务器和IDE,以及进行Java项目的...
- **Date和Time API的改进**:移除了旧的`java.util.Date`和`java.util.Calendar`,引入了新的`java.time`包,提供更强大、更易用的时间日期处理功能。 - **方法引用来替代匿名内部类**:可以引用一个方法的签名,...