关于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();  }}





原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 幼升小错过了现场审核怎么办 老人户口迁移到北京医保怎么办 过山洞经常堵耳朵怎么办 门有了一个洞该怎么办 公司要求补税没钱补怎么办 公司补税补不起了怎么办 脚被石头砸肿了怎么办 砸到脚背肿了怎么办 小猫吃完饭抓地怎么办 耳机链接处断了怎么办 表链从表盘断了怎么办 龟头和皮分开了怎么办 微信买票被骗了怎么办 撞车了我的全责怎么办 蒙田包包里面不耐脏怎么办? 摩托车转向灯不会打怎么办 浓硫酸弄到脸上怎么办 钥匙被锁在家里怎么办 有奶宝宝吸不出来怎么办 奶涨宝宝吸不出来怎么办 高铁票未取误点怎么办 飞猪上12306占座失败怎么办? 新生儿肚脐还没有脱落发炎怎么办 蹲坑被纸巾堵了怎么办 老公有外遇老婆不想离婚怎么办 结婚十年妻子出轨该怎么办 初生儿眼睛多眼屎怎么办 被丝袜脚摩擦过瘾了怎么办 老公在卧室装摄像头怎么办 听了鬼故事害怕怎么办 看完鬼片害怕睡不着怎么办 晚上看了鬼片怎么办 说话不经过大脑考虑怎么办 我太受欢迎了怎么办动漫结局 狗胃不好总呕吐怎么办 比格犬晚上叫怎么办 玻尿酸隆鼻变宽了怎么办 打玻尿酸鼻子变宽怎么办 鼻炎的人感冒了怎么办 小孩上幼儿园反复感冒怎么办 3岁宝宝感冒鼻炎怎么办