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

秦皇岛 免费建网站凡科互动游戏可以作弊码

秦皇岛 免费建网站,凡科互动游戏可以作弊码,自己做网站要买域名吗,wordpress 内容更新插#xff1a; 前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂#xff0c;风趣幽默#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈#xff0c;越努力越幸运#xff0c;大家一起学习鸭~~~ 在实际的业务开发中#xff0c;容器的遍历可以说是非… 插 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站。 坚持不懈越努力越幸运大家一起学习鸭~~~ 在实际的业务开发中容器的遍历可以说是非常非常常见的场景了遍历删除呢用的机会也比较多那么有哪几种删除元素的方法呢你用对了吗~ 本文循序渐进先说几种容易出问题的方法再引出几种比较可靠的方法~ 首先初始化一个数组用于后面的事例演示: ListInteger list new ArrayList(); for (int i 1; i 5; i) {if(i2) {//i2时添加两次用于后面的测试list.add(i); list.add(i); }else {list.add(i); } }方法一for-each循环删除结果抛出异常 for (String id : list){if (id.contains(3)) {list.remove(id); }}运行上面的代码抛出如下异常 抛出异常的根本原因在于for-each是使用Iterator来实现遍历的调用ArrayList.remove()方法会将modCount1而Iterator内部的expectedModCount确没有更新这样在进行下次循环时调用Iterator.next()会对modCount和expectedModCount进行比较不一致就会抛出ConcurrentModificationException异常。 当删除完元素后进行下一次循环时会调用下面源码中Itr.next()方法获取下一个元素会调用checkForComodification()方法对ArrayList进行校验判断在遍历ArrayList是否已经被修改由于之前对modCount1而Iterator中的expectedModCount还是初始化时ArrayList.Itr对象时赋的值所以会不相等然后抛出ConcurrentModificationException异常。 方法二普通for循环正序删除结果会漏掉对后一个元素的判断 for (int i 0; i list.size(); i) {if (2equals(list.get(i) )) {//2是要删除的元素list.remove(i);//解决方案: 加一行代码i i - 1; 删除元素后下标减1}System.out.println(当前List是list.toString()); } //原ArrayList是[1, 2, 3, 3, 4] //删除后是[1, 2, 3, 4] 少删除了一个元素2 可以看到少删除了一个元素2. 原因在于调用remove删除元素时remove方法调用System.arraycopy()方法将后面的元素移动到前面的位置也就是第二个num:2会移动到数组下标为2的位置而在下一次循环时i1之后i会为2不会对数组下标为1这个位置进行判断所以这种写法在删除元素时被删除元素a的后一个元素b会移动a的位置而i已经加1会忽略对元素b的判断所以如果是连续的重复元素会导致少删除。 **解决方案:**可以在删除元素后执行ii-1使得下次循环时再次对该数组下标进行判断。 方法三普通for循环倒序删除结果正确删除 for (int i list.size() -1 ; i0; i--) {if (list.get(i).equals(2)) {list.remove(i);}System.out.println(当前list是list.toString()); }//原ArrayList是[1, 2, 3, 3, 4] //删除后是[1, 3, 4]这种方法可以正确删除元素因为调用remove删除元素时remove方法调用System.arraycopy()将被删除元素a后面的元素向前移动而不会影响元素a之前的元素所以倒序遍历可以正常删除元素。 方法四Iterator遍历使用ArrayList.remove()删除元素结果抛出异常 IteratorInteger iterator list.iterator(); while (iterator.hasNext()) {Integer value iterator.next();if (value.equals(3)) {//3是要删除的元素list.remove(value);}System.out.println(当前list是list.toString()); } 第4种方法其实是第1种方法在编译后的代码所以第四种写法也会抛出ConcurrentModificationException异常。这种需要注意的是每次调用iterator的next()方法会导致游标向右移动从而达到遍历的目的。所以在单次循环中不能多次调用next()方法不然会导致每次循环时跳过一些元素. 方法五 Iterator遍历使用Iterator的remove删除元素结果正确删除 IteratorInteger iterator list.iterator(); while (iterator.hasNext()) {Integer value iterator.next();if (value.equals(3)) {//3是需要删除的元素iterator.remove();} }方法5可以正确删除元素。 跟第1种和第4种方法的区别在于是使用**iterator.remove();**来移除元素而在remove()方法中会对iterator的expectedModCount变量进行更新所以在下次循环调用iterator.next()方法时expectedModCount与modCount相等不会抛出异常。 方法六jdk8 流方式 list.removeIf 结果正确删除 jdk8 推荐下面这种写法简洁明了 list.removeIf(s - s.contains(3));结论 在list遍历中不要使用list.remove(), 容易出问题 推荐使用方法五的iterator.remove()或者方法六的 list.removeIf().
http://www.hkea.cn/news/14302625/

相关文章:

  • 通化市建设工程招投标网站江宁区住房和城乡建设局网站
  • 百度公司网站制作网站建设与排名
  • 会宁县建设局网站网站 外包方案
  • 东阳营销型网站建设品牌天辰建设网站公司
  • 邢台建设局网站上中标公示查询公众号运营的推广方法
  • 崇文手机网站建设建设银行客户投诉网站
  • 中国建设部网站关于资质wordpress 手机管理
  • 网投怎么做网站青海建设协会网站
  • 坪山网站设计的公司成都旅游景点攻略
  • 做京东网站需要哪些手续费wordpress 在线预览
  • 自己搭服务器 做购物网站成本2022装修简约风格效果图
  • 贵州安顺建设局网站免费追剧永久免费app
  • iis如何发布asp.net网站wordpress 财经插件
  • 深圳优秀网站建设网站建设建材
  • 建站宝盒如何使用纪念馆展厅设计
  • 一 网站建设管理基本情况保险哪家好
  • 巫山集团网站建设一站式快速网站排名多少钱
  • 建网站公司销售广州网站建设鞍山
  • 网站设计怎么保持风格一致平面设计师推荐网站
  • 学校网站建设目的是什么意思免费行情软件app网
  • 滨州哪里有做网站的广州白云做网站
  • 手机网站好还是h5好开建筑公司取名字如何取好旺
  • 广州黄埔做网站的公司国家有规定必须做可信网站验证
  • 做海报 画册的素材网站专业的聊城网站优化
  • 徐州市城乡和住房建设局网站南宁百姓网
  • 深圳品牌网站建设服务费用北美购物网站排名
  • 网站模版建设工具南阳网站建设费用
  • 成功的营销网站企业密信下载app下载官网
  • 网站用户体验设计中国互联网协会什么级别
  • 网站建设价格兴田德润i网址多少微商怎么引流被别人加