当前位置: 首页 > news >正文

ArrayList遍历时移除元素

前言

今天开发中,发现服务器返回的json数据中,对于空数组,服务器并不是返回[],而是返回[null],这也代表了数组为空,也是合法的json结构,但是使用Gson解析时,比如我解析为集合,它会解析成包含一个null元素的ArrayList,所以我需要从列表中移除掉null元素,然后再判断集合是否为空,为空就提示无数据,不为空就展示列表。

❌ 错误方式

java

for(Stringitem:list){if(item==null){list.remove(item);// 抛 ConcurrentModificationException}}

✅ 方式一:Iterator(最传统)

java

Iterator<String>iterator=list.iterator();while(iterator.hasNext()){Stringitem=iterator.next();if(item==null){iterator.remove();// 用 iterator 自己的 remove,安全}}

✅ 方式二:removeIf(最简洁,推荐)

java

list.removeIf(item->item==null);// 更简洁list.removeIf(Objects::isNull);

✅ 方式三:倒序 for 循环

java

for(inti=list.size()-1;i>=0;i--){if(list.get(i)==null){list.remove(i);}}

倒序的原因:正序删除元素后,后续元素索引会前移,容易跳过元素;倒序删除不影响前面元素的索引。


✅ 方式四:正序 for 循环(需手动处理索引)

java

for(inti=0;i<list.size();i++){if(list.get(i)==null){list.remove(i);i--;// 删除后索引前移,需要补偿}}

总结
方式推荐度说明
removeIf⭐⭐⭐⭐⭐最简洁,Java 8+
Iterator.remove()⭐⭐⭐⭐通用,兼容性好
倒序 for 循环⭐⭐⭐直观,不易出错
正序 for 循环⭐⭐需要手动i--,容易忘
for-each 直接remove抛异常

日常开发首选removeIf,需要兼容低版本用Iterator
如果使用kotlin还可以用list.filterNotNull(),但它不是直接改原集合,而是返回新集合。

http://www.jsqmd.com/news/681016/

相关文章:

  • 338微机原理-基于8086多种花色花式跑马灯五种
  • 2026年北京骑行租车年度排名,北京团建骑行活动租车靠谱的品牌推荐 - mypinpai
  • 2026年全国口碑好的肉制品企业排名,跨区域农贸市场供货选哪家 - 工业推荐榜
  • 3步掌握FakeLocation:为Android应用设置独立虚拟定位的完整指南
  • 中兴光猫工厂模式开启神器:3步解锁隐藏管理权限,告别普通用户限制
  • 告别音乐枷锁:3分钟掌握ncmdump解锁网易云音乐NCM格式
  • 339微机原理-基于8086毫秒数码管计时器仿真设计
  • 2026年口碑好的做耐磨损斜圈弹簧触指的品牌,排名情况 - 工业品网
  • 从英文困惑到中文畅玩:Degrees of Lewdity中文版完整入门手册
  • 别再踩坑了!UniApp + Vue3 开发微信小程序,WebSocket真机调试的完整避坑指南
  • OBS多平台同时推流:如何通过开源插件实现高效直播分发?
  • TranslucentTB开机自启动破解指南:彻底告别手动启动的烦恼
  • 2026年全国口碑好的肉制品企业推荐,学校食堂食材配送合作之选 - myqiye
  • 如何高效配置OBS多平台直播:obs-multi-rtmp完全实战指南
  • 340微机原理-基于8086火炉温度控制系统电路设计
  • 实用三步轻松实现Mac微信防撤回:完整保护重要信息不消失
  • 【2026年版|建议收藏】大模型学习路线:小白/程序员零基础入门,避开坑直奔高薪
  • 2026年3月工业厂房搭建服务商推荐,工业厂房搭建/做工业厂房/拆除重建工业厂房/搭建工业厂房,工业厂房搭建服务商推荐 - 品牌推荐师
  • 30 秒开启!Brex 开源 CrabTrap,以大语言模型保障 HTTP 代理安全
  • 5个核心功能全面解析:第七史诗自动化助手终极使用指南
  • 探寻2026年适合学校食堂的能锁鲜的肉制品供应商 - mypinpai
  • 美团与中科院GENERAL365:常识推理测试揭示顶尖AI模型仅获62分
  • RimSort:终极免费RimWorld模组管理器,彻底告别模组冲突烦恼
  • Universal x86 Tuning Utility:终极免费工具,一键解锁Intel/AMD处理器隐藏性能
  • TranslucentTB透明任务栏美化工具:5分钟实现Windows桌面个性化定制
  • 从Rhino到Blender:3D设计工作流的无缝桥梁搭建指南
  • 2026年做家庭聚餐肉制品的供应商推荐,哪家更靠谱 - 工业品网
  • 20世纪60年代UNIVAC计算机运行Minecraft服务器等程序,如何突破性能极限?
  • 别再只会用delay()了!用Arduino定时器中断实现OLED、电机、蓝牙多任务并行(附完整巡线小车代码)
  • 如何高效使用本地AI助手:开发者的完整实战指南