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

二级域名做网址导航大全网站手机网站 wap

二级域名做网址导航大全网站,手机网站 wap,网站开发三大流行语言,做网站单页烧钱文章目录 俩种循环遍历增加删除1 根据index删除2 根据对象删除 修改 俩种循环 Java中 普通for循环#xff0c; 增强for循环( foreach) 俩种List的遍历方式有何异同#xff0c;性能差异#xff1f; 普通for循环#xff08;使用索引遍历#xff09;#xff1a; for (int… 文章目录 俩种循环遍历增加删除1 根据index删除2 根据对象删除 修改 俩种循环 Java中 普通for循环 增强for循环( foreach) 俩种List的遍历方式有何异同性能差异 普通for循环使用索引遍历 for (int i 0; i list.size(); i) { Object item list.get(i); // 处理item }这是最基本的遍历方式它使用索引来访问列表中的每一个元素。 增强for循环也称为“foreach”循环 for (Object item : list) { // 处理item }这种循环在Java 5中被引入作为对集合遍历的语法糖。在内部它仍然使用Iterator但语法更为简洁。很多开发者也称之为“foreach”循环但实际上在Java中并没有名为“foreach”的关键字这是C#中的一个关键字。在Java中这只是增强for循环的一种常见称呼。 异同点 普通for循环 需要显式地通过索引来访问元素。 可以方便地访问和修改当前索引位置的元素。 对于List的随机访问操作性能是高效的因为ArrayList等基于数组的列表支持快速的随机访问。 增强for循环 语法简洁不需要关心索引。 只能访问元素不能方便地修改元素除非元素是可变的对象并且你修改了对象的内部状态。 在内部它使用Iterator所以对于不支持快速随机访问的数据结构如LinkedList它的性能可能更优。 性能差异 对于ArrayList等基于数组的列表普通for循环通常会比增强for循环稍微快一点因为它直接通过索引访问元素避免了Iterator的开销。但这种差异在大多数情况下是微不足道的除非列表非常大或者这段代码是性能瓶颈。 对于LinkedList等不支持快速随机访问的列表增强for循环可能会更有优势因为它内部使用Iterator这与LinkedList的迭代访问方式相匹配。 遍历 ArrayList 情况下普通for循环遍历就是最基础的for循环而foreach底层是使用迭代器。 增加 删除 1 根据index删除 ListString list new ArrayList(4);list.add(a);list.add(ab);list.add(abc);list.add(abcd);//错误方式 根据下标remove 数组形式 普通for循环for (int i 0; i list.size(); i) {if (list.get(i).contains(a)) {list.remove(i);}}[ab, abcd] 读者可能回想怎么不是空的list呢不妨让我们看下remove这个方法。这个是ArrayList 里面的实现 public E remove(int index) {rangeCheck(index);modCount;E oldValue elementData(index);int numMoved size - index - 1;if (numMoved 0)System.arraycopy(elementData, index1, elementData, index,numMoved);elementData[--size] null; // clear to let GC do its workreturn oldValue;}其中 System.arraycopy(elementData, index1, elementData, index,numMoved);拿i0举例原来的list [a,ab,abc,abcd], 执行一次remove后 arraycopy将[a,ab,abc,abcd] 的后三个前移一位把第一位覆盖这是数组删除元素的方式。这样一来原list就变成[ab,abc,abcd]第二次循环的时候i1此时list.get(1) abc直接跳过了ab,所以最后没有达到我们预期的空[]. 正确的做法是使用迭代器 //正确方式 迭代器IteratorString iterator list.iterator();while (iterator.hasNext()) {if (iterator.next().contains(a)) {// 删除元素iterator.remove();}}2 根据对象删除 //根据对象删除ListString list2 new ArrayList();list2.add(111);list2.add(222);list2.add(222);list2.add(333);正确 普通for循环 //for (int i 0; i list2.size(); i) {list2.remove(222);}错误增强for循环 抛异常 //for (String s : list2) {list2.remove(222);} 原因 迭代器内部的每次遍历都会记录List内部的modcount当做预期值然后在每次循环中用预期值与List的成员变量modCount作比较但是普通list.remove调用的是List的remove这时modcount但是iterator内记录的预期值并没有变化所以会报错。 如果想要删除元素的话需要使用迭代器内部的remove方法。 修改 foreach不可以删除/修改集合元素而for可以 foreach和for都可以修改元素对象里面的属性
http://www.hkea.cn/news/14545325/

相关文章:

  • 网站外链带nofollow是什么意思赫章网站建设
  • 丽江网站开发找千素网wordpress自己添加menu
  • 网站评估做的好不好高中做信息技术题网站
  • 网站seo完整的优化方案辛集建设局网站
  • 城桥微信网站设计制作域名注册商查询工具
  • 戴尔网站建设成品网站开发
  • 网站建站方式有哪些wordpress關閉
  • 中国建设银行企业门户网站蛋糕网站网页设计
  • 工贸一体化企业建设电子商务网站的误区做物流的可以在那些网站找客户端
  • 维护一个网站要多少钱网站关键词排名软件
  • 网站建设销售简历如何维护公司网页
  • 济南手机网站建设公司哪家好挂机宝怎么做网站
  • 网站建设整体情况介绍全新微信号2元一个自动下单
  • 免费做简单网站全球速卖通官网
  • 谷歌网站网站建设 环保 图片
  • 网站关键词提升导游网站如何建设的
  • 网站建设,h5,小程序浙江网缘科技有限公司
  • 怎么做网站_廊坊网站建设优化
  • 猫咪社区官网在线最新在seo优化中
  • 南昌做网站哪个好国外装修网站模板
  • jquery特效网站淄博网站制作优化推广
  • 网站建设 长沙百姓网抖音营销网站建设价格
  • 温州企业建站系统模板外贸平台有那些
  • 重庆微信网站作公司做一直播网站要多少钱
  • 阅读转发网站那些做的比较好2003配置网站与2008的区别
  • 做彩票类网站用什么服务器wordpress自动采集源码
  • h5网站案例提供网站建设工具
  • 灯具网站建设做外贸一般在哪个网站
  • 国家城乡住房建设部网站青岛中企动力科技股份有限公司
  • 简单个人网站设计儿童网站源码