- 浏览: 6359289 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (745)
- JQuery (25)
- JS (33)
- 数据库 (59)
- Java基础 (56)
- JSON (8)
- XML (8)
- ireport (7)
- 设计模式 (10)
- 心情 (14)
- freemarker (1)
- 问题 (15)
- powerdesigner (2)
- CSS (15)
- DWR (4)
- tomcat (16)
- Hibernate (12)
- Oracle (7)
- Struts (7)
- Spring (34)
- JSP (23)
- 需学习 (64)
- 工具类库 (63)
- Maven (14)
- 笔试题 (34)
- 源码学习 (31)
- 多线程 (39)
- Android (32)
- 缓存 (20)
- SpringMVC (14)
- jQueryEasyUi (12)
- webservice-RPC (13)
- ant (1)
- ASP.NET (10)
- 正则表达式 (3)
- Linux (15)
- JBoss (1)
- EJB (3)
- UML (2)
- JMS (3)
- Flex (8)
- JSTL (2)
- 批处理 (5)
- JVM (16)
- 【工具】 (16)
- 数据结构 (29)
- HTTP/TCP/Socket (18)
- 微信 (1)
- tomcat源码学习 (15)
- Python (30)
- 主机 (2)
- 设计与架构 (19)
- thrift-RPC (2)
- nginx (6)
- 微信小程序 (0)
- 分布式+集群 (12)
- IO (1)
- 消息队列 (4)
- 存储过程 (8)
- redis (9)
- zookeeper (5)
- 海量数据 (5)
最新评论
-
360pluse:
技术更新,战术升级!Python爬虫案例实战从零开始一站通网盘 ...
Python爬虫实战:Scrapy豆瓣电影爬取 -
18335864773:
推荐用 pageoffice 组件生成 word 文件。
JAVA生成WORD工具类 -
jjhe369:
LISTD_ONE 写道起始地址为163.135.0.1 结束 ...
IP地址与CIDR -
baojunhu99:
private final int POOL_SIZE = 5 ...
使用CompletionService获取多线程返回值 -
LovingBaby:
胡说,javascript 运行时是单线程的,event lo ...
Ajax请求是否可以实现同步
String str1 = new String("1"); String str2 = new String("2"); String str3 = new String("3"); String str4 = new String("4"); String str5 = new String("5"); List list = new ArrayList(); list.add(str1); list.add(str2); list.add(str3); list.add(str4); list.add(str5); System.out.println("list.size()=" + list.size()); for (int i = 0; i < list.size(); i++) { list.remove(i); // i--; //System.out.println(i+" "+list.get(i)+" "); } System.out.println("after remove:list.size()=" + list.size());
本来预期结果应该是:
list.size()=5 after remove:list.size()=0
但实际上结果却是:
list.size()=5 after remove:list.size()=2
原因如下: List每remove掉一个元素以后,后面的元素都会向前移动 ,此时如果执行i++,则刚刚移过来的元素没有被读取。
分析:
List中有5条数据,需要循环5次,
第一次数据为:1 2 3 4 5
执行完remove(0) 后,数据为 2 3 4 5 , i=1
第二次数据为:2 3 4 5
执行完remove(1) 后,数据为 2 4 5 , i=2
第三次数据为:2 4 5
执行完remove(2) 后,数据为 2 4 , i=3
此时如果加上上面注释的代码 System.out.println(i+" "+list.get(i)+" "); 循环第4、5次时就会出现异常
解决方法1:
每移过一次后,再把 i 移回来
for (int i = 0; i < list.size(); i++) { list.remove(i); i--; }
解决方法2:
先删除后面的元素
for (int i = list.size()-1; i >= 0; i--) { list.remove(i); }
解决方法3:
iterator式删除(貌似会有问题)
for(Iterator it = list.iterator();it.hasNext();){ it.remove(); }
部分参考:http://java.chinaitlab.com/base/821113.html
发表评论
-
拦截器和过滤器的区别
2019-06-27 10:46 7071【Spring的拦截器】于【Servlet的Filter】有 ... -
高并发下的数据结构List/Set/Map
2019-03-26 14:17 1273高并发下的Java数据结 ... -
tomcat的三种运行模式+JAVA NIO
2019-03-12 11:13 5096详解Tomcat三种运行模 ... -
反射基础
2019-01-11 14:51 671十年架构师不到400行手写一个Spring MVC ... -
java反射原理, 注解原理
2019-01-08 17:22 4597注解机制及原理 JAVA ... -
内存泄露与内存溢出的区别
2018-12-24 16:14 27531、内存泄漏 memory le ... -
深入解析JAVA中的装箱与拆箱
2018-12-21 10:42 1330地址: https://www.cnblogs.com/d ... -
负载均衡原理
2018-12-20 17:43 804简介几种负载均衡原理 高并发解决方案之一 ——负载均衡 ... -
CAS自旋锁
2018-12-20 11:12 1652我们常说的 CAS 自旋锁是什么 CAS与ABA问题 ... -
编码问题+字节+unicode
2017-11-28 10:52 4307ASCII -》 ISO8859-1 -》GB2312 - ... -
Java基础知识总结(二)~持续学习中
2017-10-11 17:56 162430.try-catch public class T ... -
StringTokenizer-大数据情况下截取字符串
2016-11-23 11:00 3199java.util.StringTokenizer ... -
tomcat中处理消息提示的公用类 StringManager.java
2016-11-18 10:24 1860代码很简单,主要学习思路。 tomcat中处理消息 ... -
JAVA IO流中的flush
2016-11-18 09:51 3266前言: 大家在使用Java IO流中Output ... -
读取JAR中文件
2015-12-08 17:03 3808【解惑】深入jar包:从jar包中读取资源文件 读取ja ... -
JAVA过滤敏感词
2015-12-07 17:38 3313Java实现敏感词过滤 编程珠玑 - 算法优化 - 过 ... -
java过滤特殊字符串
2015-08-25 19:32 14696// 过滤特殊字符 public stat ... -
java.lang.reflect.Array.newInstance与list.toArray
2015-08-18 16:35 3907一. import java.util. ... -
JRE下的rt.jar、tools.jar
2014-10-29 10:59 13476JRE下的rt.jar: 这个文件是极为重要的一个文件,r ... -
内部类
2014-10-21 17:58 1298定义: 内部类 就是在类的内部嵌套定义一个类 使用内部类 ...
相关推荐
在处理复杂的数据操作时,我们可能需要从列表中删除特定的元素,这可以通过 `remove()` 方法来实现。本篇文章将深入探讨如何使用 `remove()` 方法来删除结构体成员,即包含多个属性的对象实例。 首先,我们需要理解...
在使用`remove()`方法时,需要注意一些重要的细节以避免潜在的问题和错误。下面将详细介绍`List.remove()`方法的两种用法及其注意事项。 首先,`remove(int index)`方法用于根据提供的索引从列表中移除一个元素。...
通过`push_back`方法添加元素,然后可以使用`remove`或`erase`来管理链表中的元素。 总结,理解和正确使用`list`的`erase`和`remove`函数是C++程序员必备的技能。在删除元素时,务必注意迭代器的失效问题,避免产生...
当我们需要遍历List并根据条件删除特定元素时,需要注意正确的方法,以避免在遍历过程中出现错误。以下将详细介绍如何在C#中遍历List并删除元素,包括正序和倒序遍历的技巧。 首先,我们来看一下错误的遍历方式。...
在标准模板库(STL)中,`list`容器是一个双向链表,它提供了高效的插入和删除操作,尤其是在列表的头部或尾部进行操作时,性能尤为突出。...通过掌握上述介绍的方法,可以高效地使用`list`来解决实际问题。
在ArrayList中使用remove方法移除元素时,需要注意元素索引的变化。使用倒序删除的方法可以避免元素索引的错乱,从而正确地删除ArrayList中的元素。 扩展知识 * ArrayList的 remove 方法 * for 循环的使用 * 倒序...
本文将详细解释`List`接口中的常用方法,帮助开发者更好地理解和运用这些功能强大的工具。 #### 1. 创建List实例 ```java List<E> list = new ArrayList(); ``` 这里创建了一个基于`ArrayList`实现的`List`对象,...
在"Readme使用方法.txt"中,通常会详细介绍这些命令的使用细节、可能遇到的问题及解决方法,以及其它高级选项,如静默模式、排除特定设备等。确保在使用前详细阅读,以避免误操作。 使用RemoveDrive要注意的是,...
- `List`接口中的方法`add`, `remove`, `set`等操作可能会影响迭代器,因此在遍历列表时应避免修改列表,除非使用`Iterator`的`remove()`方法。 - `List`接口还提供了一些其他的方法,如`contains()`, `indexOf()`, ...
需要注意的是,Robot Framework中的列表用`@{list}`表示,而Python中用`$list`。比较两个`@{list}`时,直接写成`$list`。例如,`Lists Should Be Equal ${list} ${list1}` 判断两个列表是否相同。 8. **Remove From...
当需要对列表中的元素进行随机排序时,可以采用多种方法。这里我们重点介绍一种基于`Random`类的方法,如标题和描述中所述。这种方法通过创建一个随机数生成器并在循环中插入元素来实现随机排序的效果。 首先,我们...
当在循环中使用`list.remove()`时,需要注意列表的长度会在每次调用该方法时减少1。这会导致循环的索引失效或跳过某些元素。例如: ```python dat = ['1', '2', '3', '0', '0', '0'] for item in dat: if item == ...
在处理`ListBox`的数据操作时,我们可能会遇到需要移除特定元素的情况。标题提到的“测试`listBox1.Items.Remove`是用`ToString`还是利用`GetHashCode`来定位元素”,实际上涉及到两种不同的方法来确定元素身份。 1...
C# List是.NET Framework...需要注意的是,虽然List提供了强大的功能,但是性能问题仍然是开发者需要注意的地方,尤其是当处理大量数据且数据类型为值类型时。合理选择数据结构和方法,可以有效避免不必要的性能开销。
- 示例代码中使用了`Iterator`来遍历最终结果列表,并打印出每个学生的学号。 #### 示例代码分析 根据给出的部分内容,我们可以看到以下关键步骤: 1. **初始化两个列表**: - 第一个列表`list`包含四个`...
4. 可以灵活访问元素:ArrayList 提供了多种访问元素的方法,可以根据需要访问数组中的任意元素。 二、局限性: 跟一般的数组比起来,ArrayList 的速度相对较慢。这是因为 ArrayList 需要在添加和删除元素时动态...
本文将深入探讨如何比较两个集合,并关注在Java中使用List进行对比时的“新增”、“编辑”和“删除”操作。首先,我们需要理解集合的基本概念。集合是存储一组元素的数据结构,而List是一种有序的集合,允许重复元素...
在循环中使用这些方法时,要注意它们对原列表的影响,避免使用可能导致迭代错误的直接修改操作。通过创建新列表或使用切片来避免这些问题,可以使代码更加健壮。在编写涉及列表修改的代码时,理解这些细节至关重要,...
需要注意的是,在选择使用IList还是ArrayList类时,需要考虑性能和类型安全性问题。如果使用IList,那么在大多数情况下执行速度更快、更加类型安全,但如果使用值类型,则需要考虑装箱和取消装箱问题。
本文主要介绍了Python中列表(`list`)以及列表与数组(`array`)之间的相互转换方法。列表是Python中最基础的数据结构之一,支持灵活地添加和删除元素。数组则更适合于数值计算,提供更高效的内存管理和运算性能。通过...