关于list集合的remove和Iterator的remove
来源:互联网 发布:js 几秒刷新一次 编辑:程序博客网 时间:2024/06/05 19:07
在java中对list进行操作很频繁,特别是进行list启遍历,这些操作我们都会,也很熟悉,但是对java中list进行删除元素,remove list中的元素就不怎么熟悉了吧,可以说很陌生,是实际操作中也很容易出错,先看看下面这个java中如何remove list 中的元素吧.
public class test {public static void main(String[] args) {String str1 = new String("abcde");String str2 = new String("abcde");String str3 = new String("abcde");String str4 = new String("abcde");String str5 = new String("abcde");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++) {if (((String) list.get(i)).startsWith("abcde")) {list.remove(i);}}System.out.println("after remove:list.size()=" + list.size()); }}
大家觉得这个程序打印出来的结果是多少呢?
Java代码
运行结果不是:
list.size()=5
after remove:list.size()=0
而是:
Java代码
list.size()=5
after remove:list.size()=2
这是怎么回事呢?到底要如何remove list 中的元素呢?
原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。
怎么解决?有三种方法可以解决这个问题:
1.倒过来遍历list
for (int i = list.size()-1; i > =0; i--) { if (((String) list.get(i)).startsWith("abcde")) { list.remove(i); }}
2.每移除一个元素以后再把i移回来(不建议,容易搞混)
for (int i = 0; i < list.size(); i++) { if (((String) list.get(i)).startsWith("abcde")) { list.remove(i); i=i-1; }}
3.使用iterator.remove()方法删除(推荐)
for (Iterator it = list.iterator(); it.hasNext();) { String str = (String)it.next(); if (str.equals("chengang")){ it.remove(); }}
- 关于list集合的remove和Iterator的remove
- 关于list集合的remove和Iterator的remove
- 关于集合List的remove方法
- Iterator的remove()和Collection的remove()
- Iterator的remove()和Collection的remove()
- Iterator的remove()和Collection的remove()
- Iterator的remove()和Collection的remove()
- 关于Iterator的remove()方法
- 关于list的remove
- 集合类的remove(obj)和iterator的remove方法差别
- 集合类的remove(obj)和iterator的remove方法差别
- 关于List的remove陷阱
- 关于List的remove()方法
- list.remove()时出问题,集合的remove方法注意事项
- List集合中的add和remove的问题
- List集合remove元素的问题
- 关于Set和List做remove的小测试
- Iterator迭代的过程中使用list.remove
- windows系统下c语言暂停程序
- Android ListView 实现 GridView 用以实现GridView的下拉刷新
- poj 3122
- POJ2109--Power of Cryptography
- Java 夹杂文本字段的文件上传 后台实现(包括前端jquery实现的备忘)
- 关于list集合的remove和Iterator的remove
- 网页配色网站
- Python的常用库
- linux内存管理学习笔记
- 4clojure第43个问题逆向交错(Reverse Interleave)
- android学习笔记
- JAVA StringBuffer
- vc中__super的用法
- DOS命令大全--详解