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

物业网站建设整站优化seo平台

物业网站建设,整站优化seo平台,网站建设团队管理怎么写,企业营销网站制作首先说结论#xff1a;无论什么场景#xff0c;都不要对List使用for循环的同时#xff0c;删除List集合元素#xff0c;因为这么做就是不对的。 阿里开发手册也明确说明禁止使用foreach删除、增加List元素。 正确删除元素的方式是使用迭代器#xff08;Iterator#xff…首先说结论无论什么场景都不要对List使用for循环的同时删除List集合元素因为这么做就是不对的。 阿里开发手册也明确说明禁止使用foreach删除、增加List元素。 正确删除元素的方式是使用迭代器Iterator代码如下 ListString list new ArrayList(); IteratorString iterator list.iterator(); while (iterator.hasNext()) {// 删除元素iterator.remove(); }JDK8后lambda写法 list.removeIf(s - s.contains(a));不想知道为什么不能使用for循环删除List集合元素的看完前言就可以关闭本页面了想知道原因的继续往下看 下面举个实例场景看一下为什么不能使用for循环。 需求 一个List集合元素类型为String有N个元素删除这些元素中包含字符’‘a’的元素。 假设集合内容如下 ListString list new ArrayList(4); list.add(a); list.add(ab); list.add(abc); list.add(abcd);public static void main(String[] args) {ListString list new ArrayList(4);list.add(a);list.add(ab);list.add(abc);list.add(abcd);IteratorString iterator list.iterator();while (iterator.hasNext()) {if (iterator.next().contains(a)) {// 删除元素iterator.remove();}}System.out.println(list); }输出结果为 []错误答案1普通for循环for-i public static void main(String[] args) {ListString list new ArrayList(4);list.add(a);list.add(ab);list.add(abc);list.add(abcd);for (int i 0; i list.size(); i) {if (list.get(i).contains(a)) {list.remove(i);}}System.out.println(list); }输出结果为 [ab, abcd]分析 普通for循环遍历List集合的同时删除List中的元素是可以运行的代码但在大多数场景下不能使用这种方式上边的结果也印证了这一点虽然你的代码不会报错运行也正常但在本实例中这么写就是BUG。 BUG原因索引为i的元素删除后后边元素的索引自动向前补位即原来索引为i1的元素变为了索引为i的元素但是下一次循环取的索引是i1此时你以为取到的是原来索引为i1的元素其实取到是原来索引为i2的元素。 只要每删除一个元素就会漏掉下一个元素所以这种方式从逻辑上来说是存在bug的无论什么需求场景都不建议用这种方式因为不可控因素太多鬼知道生产环境中他会删掉多少元素同时漏掉多少元素。 既然这么写不报错那么个别特殊场景确实可以使用这种普通for循环删除元素的比如我们把实例的需求变动一下改为一个List集合元素类型为String有N个元素删除这些元素中包含字符’a’的元素如果有连续两个或以上元素包含’a’那么只删除当前连续元素中的奇数位元素。虽然这种场景适用但仍然不推荐还是因为太不可控。 错误答案2增强for循环foreach public static void main(String[] args) {ListString list new ArrayList(4);list.add(a);list.add(ab);list.add(abc);list.add(abcd);for (String str : list) {if (str.contains(a)) {list.remove(str);}}System.out.println(list); }运行报错 Exception in thread main java.util.ConcurrentModificationExceptionat java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)at java.util.ArrayList$Itr.next(ArrayList.java:859)at top.oldmoon.learn.test.ListTest.main(ListTest.java:24)使用百度翻译可以知道Concurrent Modification Exception并发修改异常 分析 可以简单的理解为foreach就不支持对集合中的元素进行增删操作但是可以修改。
http://www.dnsts.com.cn/news/172733.html

相关文章:

  • 网站开发应用价值源码管理 网站
  • 婚庆网站开发计划书app展示网站模板html
  • 杭州建设网站 网站建设纸箱 东莞网站建设
  • 网站建设快速哈尔滨seo优化排名推广
  • 学做衣服网站知乎wordpress改成中文的
  • 网站用什么技术做的哪些网站需要备案
  • 株洲建设网站的公司资讯网站开发的背景
  • 网站链接怎么做综合网站开发
  • 360个人网站怎么推广网站开发包括哪些技术
  • 网站备案资料查询网站上面怎么做链接
  • 做一些网站犯法么wordpress 含演示数据
  • 闵行三中网站网站建设公司招聘
  • 巴中网站建设网站推广网站建设设计计划表
  • 未备案网站查询泰安房产网签成交数据
  • 建成局网站建设怎么推广app
  • 傻瓜式网站网站建设企业资质等级
  • 某企业电子商务网站建设自己动手建立网站3
  • 佛山专业网站设计公司合肥seo招聘
  • 企业网站 带后台南京seo公司哪家好
  • 网上做网站网站代理wordpress 顶部美化
  • 网站备案太慢微信网站制作北京
  • 网站开发 问题解决wordpress图片热点链接
  • 购物网站 缓存网站框架怎么做的
  • 怀来住房和城乡建设局网站asp装修网站源码
  • 郑州网站建设动态企业只有建立自己的网站
  • 住房和城乡建设部网站倪虹深圳有几家燃气公司
  • 关于网站建设项目的投诉函百度站长app
  • 网站外链发布平台个人网站做什么内容好
  • 网站内容的特点软件开发工程师任职要求
  • 网站app怎么做崇文门网站建设