电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

淺談Java list.remove( )方法需要注意的兩個坑

瀏覽:22日期:2022-08-20 09:12:14

list.remove

最近做項(xiàng)目的過程中,需要用到list.remove()方法,結(jié)果發(fā)現(xiàn)兩個有趣的坑,經(jīng)過分析后找到原因,記錄一下跟大家分享一下。

代碼

直接上一段代碼,進(jìn)行分析。

public class Main { public static void main(String[] args) { List<String> stringList = new ArrayList<>();//數(shù)據(jù)集合 List<Integer> integerList = new ArrayList<>();//存儲remove的位置 stringList.add('a'); stringList.add('b'); stringList.add('c'); stringList.add('d'); stringList.add('e'); integerList.add(2); integerList.add(4);//此處相當(dāng)于要移除最后一個數(shù)據(jù) for (Integer i :integerList){ stringList.remove(i); } for (String s :stringList){ System.out.println(s); } }}

如上代碼我們有一個5個元素的list數(shù)據(jù)集合,我們要刪除第2個和第4個位置的數(shù)據(jù)。

第一次運(yùn)行

淺談Java list.remove( )方法需要注意的兩個坑

咦,為什么執(zhí)行兩次remove(),stringList的數(shù)據(jù)沒有變化呢?

沒有報(bào)錯,說明代碼沒有問題,那問題出在哪呢?

仔細(xì)分析我們發(fā)現(xiàn),remove()這個方法是一個重載方法,即remove(int position)和remove(object object),唯一的區(qū)別是參數(shù)類型。

for (Integer i :integerList){ stringList.remove(i); }

仔細(xì)觀察上面代碼你會發(fā)現(xiàn),其實(shí)i是Integer對象,而由于Java系統(tǒng)中如果找不到準(zhǔn)確的對象,會自動向上升級,而(int < Integer < Object),所以在調(diào)用stringList.remove(i)時,其實(shí)使用的remove(object object),而很明顯stringList不存在Integer對象,自然會移除失敗(0.0),Java也不會因此報(bào)錯。

如果我們想使用remove(int position)方法,只能降低對象等級,即修改代碼;

for (Integer i :integerList){ int a =i; stringList.remove(a); }

第二次運(yùn)行

淺談Java list.remove( )方法需要注意的兩個坑

我們發(fā)現(xiàn)提示在坐標(biāo)為4的地方越界了,這是為什么呢?

其實(shí)很簡單,因?yàn)閳?zhí)行stringList.remove(2)后,list.size()就-1為4了,我們原來要移除的最后一個位置的數(shù)據(jù)移動到了第3個位置上,自然就造成了越界。

我們修改代碼先執(zhí)行stringList.remove(4),再執(zhí)行執(zhí)行stringList.remove(2)。

integerList.add(4);

integerList.add(2);

這個錯誤提醒我們:使用remove()的方法時,要先從大到小的位置移除。當(dāng)然如果你知道具體的對象,直接移除remove(對象)更穩(wěn)妥。

第三次執(zhí)行

淺談Java list.remove( )方法需要注意的兩個坑

嗯,這次沒問題了。

總結(jié)

1、使用remove()的方法時,要先從大到小的位置移除。當(dāng)然如果你知道具體的對象,直接移除remove(對象)更穩(wěn)妥。

2、要密切注意自己調(diào)用的remove()方法中的,傳入的是int類型還是一個對象。

補(bǔ)充知識: 關(guān)于List.remove()報(bào)錯的問題

我們?nèi)绻雱h掉List中某一個對象,我們可能就會想到會用List.remove()方法。但是這樣如果后續(xù)操作這個list的時候就會報(bào)錯。

具體的原因是當(dāng)你操作了List的remove方法的時候,他回去修改List的modCount屬性。

導(dǎo)致拋出異常java.util.ConcurrentModificationException。

最好的想要修改List對象,我們可以用ListIterator。

就像這樣:

ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = 0; i < 20; i++) { arrayList.add(Integer.valueOf(i)); }ListIterator<Integer> iterator = arrayList.listIterator();while (iterator.hasNext()) {if(需要滿足的條件){iterator.remove();//刪除操作iterator.add(integer);//新增操作}}

這樣就不會去修改List的modCount屬性。

以上這篇淺談Java list.remove( )方法需要注意的兩個坑就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 深圳高新投三江工业消防解决方案提供厂家_服务商_园区智慧消防_储能消防解决方案服务商_高新投三江 | 抖音短视频运营_企业网站建设_网络推广_全网自媒体营销-东莞市凌天信息科技有限公司 | 上海阳光泵业制造有限公司 -【官方网站】 | 运动木地板厂家_体育木地板安装_篮球木地板选购_实木运动地板价格 | 定制/定做冲锋衣厂家/公司-订做/订制冲锋衣价格/费用-北京圣达信 | 钢绞线万能材料试验机-全自动恒应力两用机-混凝土恒应力压力试验机-北京科达京威科技发展有限公司 | 红酒招商加盟-葡萄酒加盟-进口红酒代理-青岛枞木酒业有限公司 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 二氧化碳/活性炭投加系统,次氯酸钠发生器,紫外线消毒设备|广州新奥 | 蓝莓施肥机,智能施肥机,自动施肥机,水肥一体化项目,水肥一体机厂家,小型施肥机,圣大节水,滴灌施工方案,山东圣大节水科技有限公司官网17864474793 | 交联度测试仪-湿漏电流测试仪-双85恒温恒湿试验箱-常州市科迈实验仪器有限公司 | 阳光模拟试验箱_高低温试验箱_高低温冲击试验箱_快速温变试验箱|东莞市赛思检测设备有限公司 | 防水套管|柔性防水套管|伸缩器|伸缩接头|传力接头-河南伟创管道 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 海峰资讯 - 专注装饰公司营销型网站建设和网络营销培训 | 众品地板网-地板品牌招商_地板装修设计_地板门户的首选网络媒体。 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 迪威娱乐|迪威娱乐客服|18183620002 | 众能联合-提供高空车_升降机_吊车_挖机等一站工程设备租赁 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 小型气象站_便携式自动气象站_校园气象站-竞道气象设备网 | 山东活动策划|济南活动公司|济南公关活动策划-济南锐嘉广告有限公司 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 针焰试验仪,灼热丝试验仪,漏电起痕试验仪,水平垂直燃烧试验仪 - 苏州亚诺天下仪器有限公司 | 咖啡加盟,咖啡店加盟连锁品牌-卡小逗 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 翅片管换热器「型号全」_厂家-淄博鑫科环保 | 翻斗式矿车|固定式矿车|曲轨侧卸式矿车|梭式矿车|矿车配件-山东卓力矿车生产厂家 | 沈阳庭院景观设计_私家花园_别墅庭院设计_阳台楼顶花园设计施工公司-【沈阳现代时园艺景观工程有限公司】 | 河南包装袋厂家_河南真空袋批发价格_河南服装袋定制-恒源达包装制品 | 医养体检包_公卫随访箱_慢病随访包_家签随访包_随访一体机-济南易享医疗科技有限公司 | FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 聚合甘油__盐城市飞龙油脂有限公司| 太空舱_民宿太空舱厂家_移动房屋太空舱价格-豪品建筑 | 爆破器材运输车|烟花爆竹运输车|1-9类危险品厢式运输车|湖北江南专用特种汽车有限公司 | 地磅-电子地磅维修-电子吊秤-汽车衡-无人值守系统-公路治超-鹰牌衡器 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! |