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

连云港做网站设计网站模板用什么做

连云港做网站设计,网站模板用什么做,红色大气企业网站,新开神途手游发布网站文章目录 俩种循环遍历增加删除1 根据index删除2 根据对象删除 修改 俩种循环 Java中 普通for循环, 增强for循环( foreach) 俩种List的遍历方式有何异同,性能差异? 普通for循环(使用索引遍历): 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删除

 List<String> 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, index+1, elementData, index,numMoved);elementData[--size] = null; // clear to let GC do its workreturn oldValue;}

其中

 System.arraycopy(elementData, index+1, elementData, index,numMoved);

拿i=0举例,原来的list = [a,ab,abc,abcd], 执行一次remove后, arraycopy将[a,ab,abc,abcd] 的后三个前移一位,把第一位覆盖,这是数组删除元素的方式。这样一来,原list就变成[ab,abc,abcd],第二次循环的时候i=1,此时list.get(1) = abc,直接跳过了ab,所以最后没有达到我们预期的空[].

正确的做法是使用迭代器

//正确方式 迭代器Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {if (iterator.next().contains("a")) {// 删除元素iterator.remove();}}

2 根据对象删除

//根据对象删除List<String> 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.yayakq.cn/news/197712/

相关文章:

  • 哪个网站能买到做披萨的芝士正宗网站建设的几点体会
  • 免费自助建站网站建设免费信息发布公众号服务平台
  • iis2008如何做网站开发公司资料员岗位职责及工作内容
  • 深圳微商城网站建设密友购app开发公司
  • 百度seo网站排名优化网页设计与制作实训报告制作内容
  • 大学生兼职网站开发毕设论文网站开发 案例详解
  • 宁德市蕉城区建设局网站网站建设公司小猫建站
  • 一起做网店一样的网站找权重高的网站方法
  • 仿站能被百度收录吗如何用本机电脑做网站服务器
  • 公司网站空间常见的网站建设技术
  • ssc网站建设网站建设都包括哪些
  • 网站建立安全连接失败辽宁省住房和城乡建设厅网站首页
  • 国内做的好的网站本地wordpress 固定连接
  • ASP动态商业网站建设案例网站制作与网站建设
  • 如何做网站公司名seodedecms搭建购物网站
  • 洛阳网站制作保定网站建设求职简历
  • 曹县建设厅网站中国建设银行注册网站用户名怎么填
  • 文学网站开发设计报告忻州做网站
  • 德州网站建设公司微商客源人脉app下载
  • 网站建设合约具体内容网站建设的发展目标
  • 北京市建设工程审核网站宁夏交通建设有限公司网站
  • 成都集团网站建设永久有效的代理ip
  • 网站制作公司兴田德润怎么联系织梦网站首页在哪里改
  • 工业设计网站官网网站突然暴增流量
  • 外贸综合服务网站建设百度输入法免费下载
  • 广州做网站的公新乐市做网站
  • 建设网站 织梦wordpress安装后应该删掉那些文件
  • 网站手机版建设黔南州住房和城乡建设局网站
  • 苏州网站建设点一点网站开发的单价
  • 河北建设协会官方网站武安网站设计公司